1af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler/* 2af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * Copyright (C) 2016 The Android Open Source Project 3af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * 4af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * Licensed under the Apache License, Version 2.0 (the "License"); 5af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * you may not use this file except in compliance with the License. 6af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * You may obtain a copy of the License at 7af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * 8af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * http://www.apache.org/licenses/LICENSE-2.0 9af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * 10af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * Unless required by applicable law or agreed to in writing, software 11af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * distributed under the License is distributed on an "AS IS" BASIS, 12af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * See the License for the specific language governing permissions and 14af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler * limitations under the License. 15af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler */ 16af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 17af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler#include <stdlib.h> 18af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler#include <string.h> 19af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 20af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler#include <gtest/gtest.h> 21af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 22a715cb1840f9a0c813c90707a351687f7a77950eMattias Nissler#include <nvram/messages/nvram_messages.h> 23af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 24af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nisslernamespace nvram { 25af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 26af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nisslernamespace { 27af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 28af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nisslertemplate <typename Message> 29af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nisslervoid EncodeAndDecode(const Message& in, Message* out) { 30af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Blob blob; 31af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(Encode(in, &blob)); 32af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(Decode(blob.data(), blob.size(), out)); 33af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 34af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 35af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} // namespace 36af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 37af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, GetInfoRequest) { 38af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request request; 39af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request.payload.Activate<COMMAND_GET_INFO>(); 40af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 41af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request decoded; 42af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(request, &decoded); 43af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 44af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_GET_INFO, decoded.payload.which()); 45af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_TRUE(decoded.payload.get<COMMAND_GET_INFO>()); 46af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 47af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 48af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, GetInfoResponse) { 49af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response response; 50af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.result = NV_RESULT_SUCCESS; 51af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.payload.Activate<COMMAND_GET_INFO>(); 52af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 53af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler GetInfoResponse& response_payload = 54af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.payload.Activate<COMMAND_GET_INFO>(); 55af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response_payload.total_size = 32768; 56af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response_payload.available_size = 4096; 57088471151b7784cef5a8555e1f155454df106113Darren Krahn response_payload.max_space_size = 512; 58af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response_payload.max_spaces = 32; 59af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(response_payload.space_list.Append(0x1234)); 60af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(response_payload.space_list.Append(0xffffffff)); 61af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(response_payload.space_list.Append(0x32)); 62af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(response_payload.space_list.Append(0x0)); 63af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(response_payload.space_list.Append(0x1)); 64af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 65af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response decoded; 66af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(response, &decoded); 67af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 68af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_RESULT_SUCCESS, response.result); 69af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_GET_INFO, decoded.payload.which()); 70af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const GetInfoResponse* decoded_payload = 71af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler decoded.payload.get<COMMAND_GET_INFO>(); 72af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(decoded_payload); 73af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 74af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(32768ULL, decoded_payload->total_size); 75af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(4096ULL, decoded_payload->available_size); 76088471151b7784cef5a8555e1f155454df106113Darren Krahn EXPECT_EQ(512ULL, decoded_payload->max_space_size); 77af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(32U, decoded_payload->max_spaces); 78af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(5U, decoded_payload->space_list.size()); 79af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x1234U, decoded_payload->space_list[0]); 80af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0xffffffffU, decoded_payload->space_list[1]); 81af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x32U, decoded_payload->space_list[2]); 82af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x0U, decoded_payload->space_list[3]); 83af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x1U, decoded_payload->space_list[4]); 84af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 85af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 86af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, CreateSpaceRequest) { 87af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request request; 88af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler CreateSpaceRequest& request_payload = 89af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request.payload.Activate<COMMAND_CREATE_SPACE>(); 90af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request_payload.index = 0x12345678; 91af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request_payload.size = 8; 92af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(request_payload.controls.Append(NV_CONTROL_BOOT_WRITE_LOCK)); 93af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(request_payload.controls.Append(NV_CONTROL_WRITE_EXTEND)); 94af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const uint8_t kAuthValue[] = {1, 2, 3, 4, 5}; 95af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(request_payload.authorization_value.Assign(kAuthValue, 96af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler sizeof(kAuthValue))); 97af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 98af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request decoded; 99af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(request, &decoded); 100af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 101af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_CREATE_SPACE, decoded.payload.which()); 102af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const CreateSpaceRequest* decoded_payload = 103af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler decoded.payload.get<COMMAND_CREATE_SPACE>(); 104af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(decoded_payload); 105af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 106af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x12345678U, decoded_payload->index); 107af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(8ULL, decoded_payload->size); 108af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(2UL, decoded_payload->controls.size()); 109af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_CONTROL_BOOT_WRITE_LOCK, decoded_payload->controls[0]); 110af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_CONTROL_WRITE_EXTEND, decoded_payload->controls[1]); 111af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const Blob& decoded_auth_value = decoded_payload->authorization_value; 112af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(sizeof(kAuthValue), decoded_auth_value.size()); 113af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0, 114af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler memcmp(kAuthValue, decoded_auth_value.data(), sizeof(kAuthValue))); 115af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 116af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 117af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, CreateSpaceResponse) { 118af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response response; 119af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.result = NV_RESULT_SPACE_ALREADY_EXISTS; 120af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.payload.Activate<COMMAND_CREATE_SPACE>(); 121af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 122af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response decoded; 123af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(response, &decoded); 124af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 125af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_RESULT_SPACE_ALREADY_EXISTS, response.result); 126af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_CREATE_SPACE, decoded.payload.which()); 127af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_TRUE(decoded.payload.get<COMMAND_CREATE_SPACE>()); 128af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 129af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 130af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, GetSpaceInfoRequest) { 131af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request request; 132af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler GetSpaceInfoRequest& request_payload = 133af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request.payload.Activate<COMMAND_GET_SPACE_INFO>(); 134af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request_payload.index = 0x1234; 135af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 136af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request decoded; 137af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(request, &decoded); 138af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 139af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_GET_SPACE_INFO, decoded.payload.which()); 140af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const GetSpaceInfoRequest* decoded_payload = 141af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler decoded.payload.get<COMMAND_GET_SPACE_INFO>(); 142af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(decoded_payload); 143af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 144af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x1234U, decoded_payload->index); 145af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 146af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 147af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, GetSpaceInfoResponse) { 148af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response response; 149af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.result = NV_RESULT_SPACE_DOES_NOT_EXIST; 150af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler GetSpaceInfoResponse& response_payload = 151af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.payload.Activate<COMMAND_GET_SPACE_INFO>(); 152af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response_payload.size = 256; 153af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(response_payload.controls.Append(NV_CONTROL_BOOT_WRITE_LOCK)); 154af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(response_payload.controls.Append(NV_CONTROL_BOOT_READ_LOCK)); 155af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(response_payload.controls.Append(NV_CONTROL_WRITE_EXTEND)); 156af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response_payload.read_locked = false; 157af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response_payload.write_locked = true; 158af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 159af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response decoded; 160af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(response, &decoded); 161af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 162af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_RESULT_SPACE_DOES_NOT_EXIST, response.result); 163af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_GET_SPACE_INFO, decoded.payload.which()); 164af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const GetSpaceInfoResponse* decoded_payload = 165af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler decoded.payload.get<COMMAND_GET_SPACE_INFO>(); 166af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(decoded_payload); 167af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 168af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(256ULL, decoded_payload->size); 169af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(3U, decoded_payload->controls.size()); 170af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_CONTROL_BOOT_WRITE_LOCK, decoded_payload->controls[0]); 171af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_CONTROL_BOOT_READ_LOCK, decoded_payload->controls[1]); 172af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_CONTROL_WRITE_EXTEND, decoded_payload->controls[2]); 173af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_FALSE(decoded_payload->read_locked); 174af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_TRUE(decoded_payload->write_locked); 175af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 176af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 177af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, DeleteSpaceRequest) { 178af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request request; 179af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler DeleteSpaceRequest& request_payload = 180af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request.payload.Activate<COMMAND_DELETE_SPACE>(); 181af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request_payload.index = 0x1234; 182af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const uint8_t kAuthValue[] = {1, 2, 3}; 183af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(request_payload.authorization_value.Assign(kAuthValue, 184af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler sizeof(kAuthValue))); 185af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 186af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request decoded; 187af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(request, &decoded); 188af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 189af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_DELETE_SPACE, decoded.payload.which()); 190af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const DeleteSpaceRequest* decoded_payload = 191af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler decoded.payload.get<COMMAND_DELETE_SPACE>(); 192af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(decoded_payload); 193af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 194af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x1234U, decoded_payload->index); 195af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const Blob& decoded_auth_value = decoded_payload->authorization_value; 196af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(sizeof(kAuthValue), decoded_auth_value.size()); 197af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0, 198af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler memcmp(kAuthValue, decoded_auth_value.data(), sizeof(kAuthValue))); 199af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 200af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 201af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, DeleteSpaceResponse) { 202af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response response; 203af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.result = NV_RESULT_ACCESS_DENIED; 204af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.payload.Activate<COMMAND_DELETE_SPACE>(); 205af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 206af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response decoded; 207af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(response, &decoded); 208af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 209af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_RESULT_ACCESS_DENIED, response.result); 210af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_DELETE_SPACE, decoded.payload.which()); 211af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_TRUE(decoded.payload.get<COMMAND_DELETE_SPACE>()); 212af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 213af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 214af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, DisableCreateRequest) { 215af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request request; 216af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request.payload.Activate<COMMAND_DISABLE_CREATE>(); 217af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 218af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request decoded; 219af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(request, &decoded); 220af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 221af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_DISABLE_CREATE, decoded.payload.which()); 222af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_TRUE(decoded.payload.get<COMMAND_DISABLE_CREATE>()); 223af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 224af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 225af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, DisableCreateResponse) { 226af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response response; 227af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.result = NV_RESULT_INTERNAL_ERROR; 228af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.payload.Activate<COMMAND_DISABLE_CREATE>(); 229af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 230af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response decoded; 231af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(response, &decoded); 232af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 233af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_RESULT_INTERNAL_ERROR, response.result); 234af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_DISABLE_CREATE, decoded.payload.which()); 235af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_TRUE(decoded.payload.get<COMMAND_DISABLE_CREATE>()); 236af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 237af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 238af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, WriteSpaceRequest) { 239af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request request; 240af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler WriteSpaceRequest& request_payload = 241af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request.payload.Activate<COMMAND_WRITE_SPACE>(); 242af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request_payload.index = 0x1234; 243af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const uint8_t kData[] = {17, 29, 33}; 244af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(request_payload.buffer.Assign(kData, sizeof(kData))); 245af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const uint8_t kAuthValue[] = {1, 2, 3}; 246af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(request_payload.authorization_value.Assign(kAuthValue, 247af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler sizeof(kAuthValue))); 248af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 249af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request decoded; 250af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(request, &decoded); 251af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 252af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_WRITE_SPACE, decoded.payload.which()); 253af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const WriteSpaceRequest* decoded_payload = 254af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler decoded.payload.get<COMMAND_WRITE_SPACE>(); 255af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(decoded_payload); 256af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 257af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x1234U, decoded_payload->index); 258af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const Blob& decoded_buffer = decoded_payload->buffer; 259af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(sizeof(kData), decoded_buffer.size()); 260af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0, memcmp(kData, decoded_buffer.data(), sizeof(kData))); 261af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const Blob& decoded_auth_value = decoded_payload->authorization_value; 262af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(sizeof(kAuthValue), decoded_auth_value.size()); 263af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0, 264af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler memcmp(kAuthValue, decoded_auth_value.data(), sizeof(kAuthValue))); 265af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 266af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 267af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, WriteSpaceResponse) { 268af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response response; 269af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.result = NV_RESULT_OPERATION_DISABLED; 270af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.payload.Activate<COMMAND_WRITE_SPACE>(); 271af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 272af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response decoded; 273af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(response, &decoded); 274af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 275af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_RESULT_OPERATION_DISABLED, response.result); 276af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_WRITE_SPACE, decoded.payload.which()); 277af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_TRUE(decoded.payload.get<COMMAND_WRITE_SPACE>()); 278af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 279af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 280af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, ReadSpaceRequest) { 281af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request request; 282af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ReadSpaceRequest& request_payload = 283af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request.payload.Activate<COMMAND_READ_SPACE>(); 284af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request_payload.index = 0x1234; 285af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const uint8_t kAuthValue[] = {1, 2, 3}; 286af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(request_payload.authorization_value.Assign(kAuthValue, 287af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler sizeof(kAuthValue))); 288af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 289af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request decoded; 290af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(request, &decoded); 291af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 292af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_READ_SPACE, decoded.payload.which()); 293af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const ReadSpaceRequest* decoded_payload = 294af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler decoded.payload.get<COMMAND_READ_SPACE>(); 295af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(decoded_payload); 296af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 297af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x1234U, decoded_payload->index); 298af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const Blob& decoded_auth_value = decoded_payload->authorization_value; 299af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(sizeof(kAuthValue), decoded_auth_value.size()); 300af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0, 301af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler memcmp(kAuthValue, decoded_auth_value.data(), sizeof(kAuthValue))); 302af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 303af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 304af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, ReadSpaceResponse) { 305af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response response; 306af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.result = NV_RESULT_SUCCESS; 307af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ReadSpaceResponse& response_payload = 308af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.payload.Activate<COMMAND_READ_SPACE>(); 309af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const uint8_t kData[] = {48, 0, 32, 1, 255}; 310af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(response_payload.buffer.Assign(kData, sizeof(kData))); 311af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 312af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response decoded; 313af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(response, &decoded); 314af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 315af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_RESULT_SUCCESS, response.result); 316af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_READ_SPACE, decoded.payload.which()); 317af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const ReadSpaceResponse* decoded_payload = 318af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler decoded.payload.get<COMMAND_READ_SPACE>(); 319af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(decoded_payload); 320af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const Blob& decoded_buffer = decoded_payload->buffer; 321af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(sizeof(kData), decoded_buffer.size()); 322af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0, memcmp(kData, decoded_buffer.data(), sizeof(kData))); 323af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 324af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 325af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, LockSpaceWriteRequest) { 326af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request request; 327af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler LockSpaceWriteRequest& request_payload = 328af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request.payload.Activate<COMMAND_LOCK_SPACE_WRITE>(); 329af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request_payload.index = 0x1234; 330af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const uint8_t kAuthValue[] = {1, 2, 3}; 331af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(request_payload.authorization_value.Assign(kAuthValue, 332af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler sizeof(kAuthValue))); 333af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 334af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request decoded; 335af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(request, &decoded); 336af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 337af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_LOCK_SPACE_WRITE, decoded.payload.which()); 338af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const LockSpaceWriteRequest* decoded_payload = 339af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler decoded.payload.get<COMMAND_LOCK_SPACE_WRITE>(); 340af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(decoded_payload); 341af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 342af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x1234U, decoded_payload->index); 343af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const Blob& decoded_auth_value = decoded_payload->authorization_value; 344af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(sizeof(kAuthValue), decoded_auth_value.size()); 345af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0, 346af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler memcmp(kAuthValue, decoded_auth_value.data(), sizeof(kAuthValue))); 347af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 348af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 349af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, LockSpaceWriteResponse) { 350af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response response; 351af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.result = NV_RESULT_SUCCESS; 352af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.payload.Activate<COMMAND_LOCK_SPACE_WRITE>(); 353af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 354af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response decoded; 355af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(response, &decoded); 356af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 357af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_RESULT_SUCCESS, response.result); 358af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_LOCK_SPACE_WRITE, decoded.payload.which()); 359af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_TRUE(decoded.payload.get<COMMAND_LOCK_SPACE_WRITE>()); 360af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 361af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 362af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, LockSpaceReadRequest) { 363af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request request; 364af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler LockSpaceReadRequest& request_payload = 365af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request.payload.Activate<COMMAND_LOCK_SPACE_READ>(); 366af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler request_payload.index = 0x1234; 367af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const uint8_t kAuthValue[] = {1, 2, 3}; 368af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(request_payload.authorization_value.Assign(kAuthValue, 369af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler sizeof(kAuthValue))); 370af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 371af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request decoded; 372af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(request, &decoded); 373af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 374af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_LOCK_SPACE_READ, decoded.payload.which()); 375af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const LockSpaceReadRequest* decoded_payload = 376af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler decoded.payload.get<COMMAND_LOCK_SPACE_READ>(); 377af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_TRUE(decoded_payload); 378af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 379af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0x1234U, decoded_payload->index); 380af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler const Blob& decoded_auth_value = decoded_payload->authorization_value; 381af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler ASSERT_EQ(sizeof(kAuthValue), decoded_auth_value.size()); 382af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(0, 383af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler memcmp(kAuthValue, decoded_auth_value.data(), sizeof(kAuthValue))); 384af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 385af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 386af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, LockSpaceReadResponse) { 387af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response response; 388af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.result = NV_RESULT_SUCCESS; 389af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler response.payload.Activate<COMMAND_LOCK_SPACE_READ>(); 390af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 391af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response decoded; 392af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EncodeAndDecode(response, &decoded); 393af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 394af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(NV_RESULT_SUCCESS, response.result); 395af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_EQ(COMMAND_LOCK_SPACE_READ, decoded.payload.which()); 396af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler EXPECT_TRUE(decoded.payload.get<COMMAND_LOCK_SPACE_READ>()); 397af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 398af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 399af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias NisslerTEST(NvramMessagesTest, GarbageDecode) { 400af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler srand(0); 401af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler uint8_t random_data[1024]; 402af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler for (size_t i = 0; i < sizeof(random_data); ++i) { 403af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler random_data[i] = rand() & 0xff; 404af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler } 405af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 406af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler // Feed the data to the decoder. The test succeeds if we don't crash. 407af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler for (size_t pos = 0; pos < sizeof(random_data); ++pos) { 408af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler for (size_t end = pos; end < sizeof(random_data); ++end) { 409af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Request request; 410af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Decode(random_data + pos, end - pos, &request); 411af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 412af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Response response; 413af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler Decode(random_data + pos, end - pos, &response); 414af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler } 415af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler } 416af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} 417af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler 418af96ca4702d2766e3757fcee54e8eece7cb6d69eMattias Nissler} // namespace nvram 419