197f7abcfSMatt Spinler /** 297f7abcfSMatt Spinler * Copyright © 2019 IBM Corporation 397f7abcfSMatt Spinler * 497f7abcfSMatt Spinler * Licensed under the Apache License, Version 2.0 (the "License"); 597f7abcfSMatt Spinler * you may not use this file except in compliance with the License. 697f7abcfSMatt Spinler * You may obtain a copy of the License at 797f7abcfSMatt Spinler * 897f7abcfSMatt Spinler * http://www.apache.org/licenses/LICENSE-2.0 997f7abcfSMatt Spinler * 1097f7abcfSMatt Spinler * Unless required by applicable law or agreed to in writing, software 1197f7abcfSMatt Spinler * distributed under the License is distributed on an "AS IS" BASIS, 1297f7abcfSMatt Spinler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1397f7abcfSMatt Spinler * See the License for the specific language governing permissions and 1497f7abcfSMatt Spinler * limitations under the License. 1597f7abcfSMatt Spinler */ 16df13bdb6SMatt Spinler #include "extensions/openpower-pels/log_id.hpp" 17df13bdb6SMatt Spinler #include "extensions/openpower-pels/paths.hpp" 18df13bdb6SMatt Spinler 19df13bdb6SMatt Spinler #include <arpa/inet.h> 20df13bdb6SMatt Spinler 21*620ef38cSAndrew Geissler #include <chrono> 22df13bdb6SMatt Spinler #include <filesystem> 23*620ef38cSAndrew Geissler #include <thread> 24df13bdb6SMatt Spinler 25df13bdb6SMatt Spinler #include <gtest/gtest.h> 26df13bdb6SMatt Spinler 27df13bdb6SMatt Spinler using namespace openpower::pels; 28df13bdb6SMatt Spinler namespace fs = std::filesystem; 29df13bdb6SMatt Spinler 30df13bdb6SMatt Spinler TEST(LogIdTest, TimeBasedIDTest) 31df13bdb6SMatt Spinler { 32df13bdb6SMatt Spinler uint32_t lastID = 0; 33df13bdb6SMatt Spinler for (int i = 0; i < 10; i++) 34df13bdb6SMatt Spinler { 35df13bdb6SMatt Spinler auto id = detail::getTimeBasedLogID(); 36df13bdb6SMatt Spinler 37df13bdb6SMatt Spinler EXPECT_EQ(id & 0xFF000000, 0x50000000); 38df13bdb6SMatt Spinler EXPECT_NE(id, lastID); 39df13bdb6SMatt Spinler lastID = id; 40*620ef38cSAndrew Geissler std::this_thread::sleep_for(std::chrono::milliseconds(1)); 41df13bdb6SMatt Spinler } 42df13bdb6SMatt Spinler } 43df13bdb6SMatt Spinler 44df13bdb6SMatt Spinler TEST(LogIdTest, IDTest) 45df13bdb6SMatt Spinler { 46df13bdb6SMatt Spinler EXPECT_EQ(generatePELID(), 0x50000001); 47df13bdb6SMatt Spinler EXPECT_EQ(generatePELID(), 0x50000002); 48df13bdb6SMatt Spinler EXPECT_EQ(generatePELID(), 0x50000003); 49df13bdb6SMatt Spinler EXPECT_EQ(generatePELID(), 0x50000004); 50df13bdb6SMatt Spinler EXPECT_EQ(generatePELID(), 0x50000005); 51df13bdb6SMatt Spinler EXPECT_EQ(generatePELID(), 0x50000006); 52df13bdb6SMatt Spinler 53df13bdb6SMatt Spinler auto backingFile = getPELIDFile(); 54df13bdb6SMatt Spinler fs::remove(backingFile); 55df13bdb6SMatt Spinler EXPECT_EQ(generatePELID(), 0x50000001); 56df13bdb6SMatt Spinler EXPECT_EQ(generatePELID(), 0x50000002); 57df13bdb6SMatt Spinler EXPECT_EQ(generatePELID(), 0x50000003); 58df13bdb6SMatt Spinler 59df13bdb6SMatt Spinler fs::remove_all(fs::path{backingFile}.parent_path()); 60df13bdb6SMatt Spinler } 61