From de90fdc182fe99116ba7abf2de899726339125d7 Mon Sep 17 00:00:00 2001 From: Andrew Jeffery Date: Fri, 23 Feb 2018 15:59:46 +1030 Subject: test: vpnor: Rename create_read_window_vpnor For separate tests of access to offsets that do and don't contain a partition. Change-Id: I2466821b81eb721eeffe7db02d177c6f78e06101 Signed-off-by: Andrew Jeffery --- test/vpnor/Makefile.am.include | 10 +-- test/vpnor/create_read_window_partition_exists.cpp | 84 +++++++++++++++++ test/vpnor/create_read_window_vpnor.cpp | 100 --------------------- 3 files changed, 89 insertions(+), 105 deletions(-) create mode 100644 test/vpnor/create_read_window_partition_exists.cpp delete mode 100644 test/vpnor/create_read_window_vpnor.cpp (limited to 'test') diff --git a/test/vpnor/Makefile.am.include b/test/vpnor/Makefile.am.include index b71e8e0..e58f6ac 100644 --- a/test/vpnor/Makefile.am.include +++ b/test/vpnor/Makefile.am.include @@ -12,7 +12,7 @@ test_vpnor_create_pnor_partition_table_SOURCES = \ test_vpnor_create_pnor_partition_table_LDFLAGS = $(OESDK_TESTCASE_FLAGS) test_vpnor_create_pnor_partition_table_LDADD = $(VPNOR_LDADD) -test_vpnor_create_read_window_vpnor_SOURCES = \ +test_vpnor_create_read_window_partition_exists_SOURCES = \ $(TEST_MBOX_VPNOR_SRCS) $(TEST_MOCK_SRCS) \ mboxd_msg.c \ mboxd_windows.c \ @@ -21,9 +21,9 @@ test_vpnor_create_read_window_vpnor_SOURCES = \ mboxd_pnor_partition_table.cpp \ mboxd_flash_virtual.cpp \ pnor_partition.cpp \ - %reldir%/create_read_window_vpnor.cpp -test_vpnor_create_read_window_vpnor_LDFLAGS = $(OESDK_TESTCASE_FLAGS) -test_vpnor_create_read_window_vpnor_LDADD = $(VPNOR_LDADD) + %reldir%/create_read_window_partition_exists.cpp +test_vpnor_create_read_window_partition_exists_LDFLAGS = $(OESDK_TESTCASE_FLAGS) +test_vpnor_create_read_window_partition_exists_LDADD = $(VPNOR_LDADD) test_vpnor_write_patch_SOURCES = \ $(TEST_MBOX_VPNOR_SRCS) \ @@ -68,7 +68,7 @@ test_vpnor_write_rw_LDADD = $(VPNOR_LDADD) if VIRTUAL_PNOR_ENABLED check_PROGRAMS += \ %reldir%/create_pnor_partition_table \ - %reldir%/create_read_window_vpnor \ + %reldir%/create_read_window_partition_exists \ %reldir%/write_prsv \ %reldir%/write_ro \ %reldir%/write_rw \ diff --git a/test/vpnor/create_read_window_partition_exists.cpp b/test/vpnor/create_read_window_partition_exists.cpp new file mode 100644 index 0000000..b051a57 --- /dev/null +++ b/test/vpnor/create_read_window_partition_exists.cpp @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright (C) 2018 IBM Corp. + +#include "config.h" +#include "mboxd_pnor_partition_table.h" + +extern "C" { +#include "test/mbox.h" +#include "test/system.h" +} + +#include +#include + +#include +#include +#include + +#include "test/vpnor/tmpd.hpp" + +// A read window assumes that the toc is located at offset 0, +// so create dummy partition at arbitrary offset 0x100. +const std::string toc[] = { + "partition01=HBB,00000100,0001000,ECC,PRESERVED", +}; + +uint8_t data[8] = {0xaa, 0x55, 0xaa, 0x66, 0x77, 0x88, 0x99, 0xab}; + +#define BLOCK_SIZE 4096 +#define MEM_SIZE (BLOCK_SIZE * 2) +#define ERASE_SIZE BLOCK_SIZE +#define N_WINDOWS 1 +#define WINDOW_SIZE BLOCK_SIZE + +static const uint8_t get_info[] = {0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00}; + +// offset 0x100 and size 6 +static const uint8_t create_read_window[] = {0x04, 0x01, 0x01, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00}; + +static const uint8_t response[] = {0x04, 0x01, 0xfe, 0xff, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}; + +namespace fs = std::experimental::filesystem; +namespace test = openpower::virtual_pnor::test; + +int main() +{ + struct mbox_context *ctx; + + system_set_reserved_size(MEM_SIZE); + system_set_mtd_sizes(MEM_SIZE, ERASE_SIZE); + + ctx = mbox_create_test_context(N_WINDOWS, WINDOW_SIZE); + + test::VpnorRoot root(ctx, toc, BLOCK_SIZE); + root.write("HBB", data, sizeof(data)); + + vpnor_create_partition_table_from_path(ctx, root.ro().c_str()); + + int rc = mbox_command_dispatch(ctx, get_info, sizeof(get_info)); + assert(rc == 1); + + // send the request for partition1 + rc = mbox_command_dispatch(ctx, create_read_window, + sizeof(create_read_window)); + assert(rc == 1); + + rc = mbox_cmp(ctx, response, sizeof(response)); + assert(rc == 0); + + // Compare the reserved memory to the pnor + rc = memcmp(ctx->mem, data, 6); + assert(rc == 0); + + // TODO: Add few more test cases for read from multiple partitions(PRSV/RW) + // Read beyond the partition file size. + // openbmc/openbmc#1868 + + return rc; +} diff --git a/test/vpnor/create_read_window_vpnor.cpp b/test/vpnor/create_read_window_vpnor.cpp deleted file mode 100644 index 87deb9c..0000000 --- a/test/vpnor/create_read_window_vpnor.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * MBox Daemon Test File - * - * Copyright 2018 IBM - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include "config.h" -#include "mboxd_pnor_partition_table.h" - -extern "C" { -#include "test/mbox.h" -#include "test/system.h" -} - -#include -#include - -#include -#include -#include - -#include "test/vpnor/tmpd.hpp" - -// A read window assumes that the toc is located at offset 0, -// so create dummy partition at arbitrary offset 0x100. -const std::string toc[] = { - "partition01=HBB,00000100,0001000,ECC,PRESERVED", -}; - -uint8_t data[8] = {0xaa, 0x55, 0xaa, 0x66, 0x77, 0x88, 0x99, 0xab}; - -#define BLOCK_SIZE 4096 -#define MEM_SIZE (BLOCK_SIZE * 2) -#define ERASE_SIZE BLOCK_SIZE -#define N_WINDOWS 1 -#define WINDOW_SIZE BLOCK_SIZE - -static const uint8_t get_info[] = {0x02, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; - -// offset 0x100 and size 6 -static const uint8_t create_read_window[] = {0x04, 0x01, 0x01, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; - -static const uint8_t response[] = {0x04, 0x01, 0xfe, 0xff, 0x01, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}; - -namespace fs = std::experimental::filesystem; -namespace test = openpower::virtual_pnor::test; - -int main() -{ - struct mbox_context *ctx; - - system_set_reserved_size(MEM_SIZE); - system_set_mtd_sizes(MEM_SIZE, ERASE_SIZE); - - ctx = mbox_create_test_context(N_WINDOWS, WINDOW_SIZE); - - test::VpnorRoot root(ctx, toc, BLOCK_SIZE); - root.write("HBB", data, sizeof(data)); - - vpnor_create_partition_table_from_path(ctx, root.ro().c_str()); - - int rc = mbox_command_dispatch(ctx, get_info, sizeof(get_info)); - assert(rc == 1); - - // send the request for partition1 - rc = mbox_command_dispatch(ctx, create_read_window, - sizeof(create_read_window)); - assert(rc == 1); - - rc = mbox_cmp(ctx, response, sizeof(response)); - assert(rc == 0); - - // Compare the reserved memory to the pnor - rc = memcmp(ctx->mem, data, 6); - assert(rc == 0); - - // TODO: Add few more test cases for read from multiple partitions(PRSV/RW) - // Read beyond the partition file size. - // openbmc/openbmc#1868 - - return rc; -} -- cgit v1.2.1