/* * * Copyright (c) 2006 The Apache Software Foundation * * 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 "unit_test.h" #include "test_tools.h" #include "qpid/cluster/StoreStatus.h" #include "qpid/framing/Uuid.h" #include #include using namespace std; using namespace qpid::cluster; using namespace qpid::framing; using namespace qpid::framing::cluster; using namespace boost::assign; using namespace boost::filesystem; namespace qpid { namespace tests { QPID_AUTO_TEST_SUITE(StoreStatusTestSuite) const char* TEST_DIR = "StoreStatus.tmp"; struct TestDir { TestDir() { remove_all(TEST_DIR); create_directory(TEST_DIR); } ~TestDir() { remove_all(TEST_DIR); } }; QPID_AUTO_TEST_CASE(testLoadEmpty) { TestDir td; StoreStatus ss(TEST_DIR); BOOST_CHECK_EQUAL(ss.getState(), STORE_STATE_NO_STORE); BOOST_CHECK(!ss.getClusterId()); BOOST_CHECK(!ss.getShutdownId()); ss.load(); BOOST_CHECK_EQUAL(ss.getState(), STORE_STATE_EMPTY_STORE); BOOST_CHECK(!ss.getShutdownId()); } QPID_AUTO_TEST_CASE(testSaveLoadDirty) { TestDir td; Uuid clusterId = Uuid(true); StoreStatus ss(TEST_DIR); ss.load(); ss.setClusterId(clusterId); ss.dirty(); BOOST_CHECK_EQUAL(ss.getState(), STORE_STATE_DIRTY_STORE); StoreStatus ss2(TEST_DIR); ss2.load(); BOOST_CHECK_EQUAL(ss2.getState(), STORE_STATE_DIRTY_STORE); BOOST_CHECK_EQUAL(ss2.getClusterId(), clusterId); BOOST_CHECK(!ss2.getShutdownId()); } QPID_AUTO_TEST_CASE(testSaveLoadClean) { TestDir td; Uuid clusterId = Uuid(true); Uuid shutdownId = Uuid(true); StoreStatus ss(TEST_DIR); ss.load(); ss.setClusterId(clusterId); ss.clean(shutdownId); BOOST_CHECK_EQUAL(ss.getState(), STORE_STATE_CLEAN_STORE); StoreStatus ss2(TEST_DIR); ss2.load(); BOOST_CHECK_EQUAL(ss2.getState(), STORE_STATE_CLEAN_STORE); BOOST_CHECK_EQUAL(ss2.getClusterId(), clusterId); BOOST_CHECK_EQUAL(ss2.getShutdownId(), shutdownId); } QPID_AUTO_TEST_CASE(testMarkDirty) { // Save clean then mark to dirty. TestDir td; Uuid clusterId = Uuid(true); Uuid shutdownId = Uuid(true); StoreStatus ss(TEST_DIR); ss.load(); ss.setClusterId(clusterId); ss.dirty(); ss.clean(shutdownId); ss.dirty(); StoreStatus ss2(TEST_DIR); ss2.load(); BOOST_CHECK_EQUAL(ss2.getState(), STORE_STATE_DIRTY_STORE); BOOST_CHECK_EQUAL(ss2.getClusterId(), clusterId); BOOST_CHECK(!ss2.getShutdownId()); } QPID_AUTO_TEST_SUITE_END() }} // namespace qpid::tests