blob: 484838df316d3796a5e2cc2341f7c4ec899a6040 [file] [log] [blame]
// Copyright 2016 Google Inc. All Rights Reserved.
// Author: germuth@google.com (Aaron Germuth)
// Humax Hnvram Base Testing Class
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include "gtest/gtest.h"
#define TEST_MAIN
// Tests can change this variable to temporarily write to another file
// Value restored to staticFileName at end of test
const char* hnvramFileName;
const char* staticFileName;
const int hnvramFileSize = 2048000;
// Helper Testing Methods
int hnvram_empty() {
unsigned char buff[hnvramFileSize + 1];
int fp = open(hnvramFileName, O_RDONLY);
EXPECT_GT(fp, 0);
EXPECT_EQ(hnvramFileSize, read(fp, buff, hnvramFileSize));
EXPECT_EQ(0, close(fp));
for(int i = 0; i < hnvramFileSize; i++) {
if (buff[i] != '\0') {
return 0;
}
}
return 1;
}
int delete_hnvram_file() {
char cmd[30];
sprintf(cmd, "rm -f %s", hnvramFileName);
int ret = system(cmd);
if (ret != 0) {
fprintf(stderr, "Failed to delete hnvram partition file: %s\n",
hnvramFileName);
}
return ret;
}
// Base testing class
class HnvramTest : public ::testing::Test {
public:
HnvramTest() {}
virtual ~HnvramTest() {}
virtual void SetUp() {
hnvramFileName = staticFileName;
// Create new blank hnvram partition
char cmd[255];
sprintf(cmd, "dd if=/dev/zero of=%s bs=1024 count=2KB >& /dev/null",
hnvramFileName);
int ret = system(cmd);
if (ret != 0) {
fprintf(stderr, "Failed to create hnvram partition file: %s\n",
hnvramFileName);
}
EXPECT_TRUE(hnvram_empty());
}
virtual void TearDown() {
delete_hnvram_file();
}
};
class HnvramEnvironment : public ::testing::Environment {
public:
virtual ~HnvramEnvironment() {}
virtual void SetUp() {
// Get Unique File Name
// use mktemp instead of mkstemp, since we don't want to open file yet
char fileName[255] = "/tmp/hnvram-test-XXXXXX";
mktemp(fileName);
if (fileName[0] == '\0') {
fprintf(stderr, "Failed to create unique file name\n");
}
staticFileName = strdup(fileName);
}
virtual void TearDown() {
// Just incase test case was interrupted, delete file here too
delete_hnvram_file();
}
};