1818#define BOOST_TEST_MAIN
1919#define BOOST_TEST_DYN_LINK
2020
21- #include < boost/test/tools/interface.hpp>
22- #include < boost/test/included/unit_test.hpp>
23- #include < boost/test/unit_test_suite.hpp>
24- #include < boost/test/tools/interface.hpp>
25-
21+ #include < set>
2622#include " CCDB/BasicCCDBManager.h"
2723#include " CCDB/CCDBTimeStampUtils.h"
2824#include " CCDB/CcdbApi.h"
25+ #include < boost/test/unit_test.hpp>
2926
3027static std::string basePath;
3128// std::string ccdbUrl = "http://localhost:8080";
@@ -39,15 +36,15 @@ bool hostReachable = false;
3936struct Fixture {
4037 Fixture ()
4138 {
42- o2::ccdb::CcdbApi api ;
39+ auto & ccdbManager = o2::ccdb::BasicCCDBManager::instance () ;
4340 if (std::getenv (" ALICEO2_CCDB_HOST" )) {
4441 ccdbUrl = std::string (std::getenv (" ALICEO2_CCDB_HOST" ));
4542 }
46- api. init (ccdbUrl);
47- hostReachable = api .isHostReachable ();
43+ ccdbManager. setURL (ccdbUrl);
44+ hostReachable = ccdbManager. getCCDBAccessor () .isHostReachable ();
4845 char hostname[_POSIX_HOST_NAME_MAX];
4946 gethostname (hostname, _POSIX_HOST_NAME_MAX);
50- basePath = std::string (" Users/m/meide/BasicCCDBManager /" );
47+ basePath = std::string (" Users/m/meide/Tests /" ) + hostname + " /pid- " + getpid () + " /BasicCCDBManager/ " ;
5148
5249 LOG (info) << " Path we will use in this test suite : " + basePath << std::endl;
5350 LOG (info) << " ccdb url: " << ccdbUrl << std::endl;
@@ -56,9 +53,7 @@ struct Fixture {
5653 ~Fixture ()
5754 {
5855 if (hostReachable) {
59- o2::ccdb::CcdbApi api;
60- api.init (ccdbUrl);
61- api.truncate (basePath + " *" ); // This deletes the data after test is run, disable if you want to inspect the data
56+ o2::ccdb::BasicCCDBManager::instance ().getCCDBAccessor ().truncate (basePath + " *" ); // This deletes the data after test is run, disable if you want to inspect the data
6257 LOG (info) << " Test data truncated/deleted (" << basePath << " )" << std::endl;
6358 }
6459 }
@@ -74,22 +69,6 @@ struct if_reachable {
7469 return hostReachable;
7570 }
7671};
77- /* *
78- * Fixture for the tests, i.e. code is ran in every test that uses it, i.e. it is like a setup and teardown for tests.
79- * Copied from testCcdbApi.cxx
80- */
81- struct test_fixture {
82- test_fixture ()
83- {
84- api.init (ccdbUrl);
85- metadata[" Hello" ] = " World" ;
86- LOG (info) << " *** " << boost::unit_test::framework::current_test_case ().p_name << " ***" << std::endl;
87- }
88- ~test_fixture () = default ;
89-
90- o2::ccdb::CcdbApi api;
91- std::map<std::string, std::string> metadata;
92- };
9372
9473// Only compare known and stable keys (avoid volatile ones like Date)
9574static const std::set<std::string> sStableKeys = {
@@ -112,23 +91,24 @@ BOOST_AUTO_TEST_CASE(testCachedHeaders, *boost::unit_test::precondition(if_reach
11291{
11392 // / ━━━━━━━ ARRANGE ━━━━━━━━━
11493 // First store objects to test with
115- test_fixture f;
116-
94+ auto & ccdbManager = o2::ccdb::BasicCCDBManager::instance ();
11795 std::string pathA = basePath + " CachingA" ;
11896 std::string pathB = basePath + " CachingB" ;
11997 std::string pathC = basePath + " CachingC" ;
12098 std::string ccdbObjO = " testObjectO" ;
12199 std::string ccdbObjN = " testObjectN" ;
122100 std::string ccdbObjX = " testObjectX" ;
123- std::map<std::string, std::string> md = f.metadata ;
101+ std::map<std::string, std::string> md = {
102+ {" Hello" , " World" },
103+ {" Key1" , " Value1" },
104+ {" Key2" , " Value2" },
105+ };
124106 long start = 1000 , stop = 3000 ;
125- f. api .storeAsTFileAny <std::string>(&ccdbObjO, pathA, md, start, stop);
126- f. api .storeAsTFileAny <std::string>(&ccdbObjN, pathB, md, start, stop);
127- f. api .storeAsTFileAny <std::string>(&ccdbObjX, pathC, md, start, stop);
107+ ccdbManager. getCCDBAccessor () .storeAsTFileAny <std::string>(&ccdbObjO, pathA, md, start, stop);
108+ ccdbManager. getCCDBAccessor () .storeAsTFileAny <std::string>(&ccdbObjN, pathB, md, start, stop);
109+ ccdbManager. getCCDBAccessor () .storeAsTFileAny <std::string>(&ccdbObjX, pathC, md, start, stop);
128110 // initilize the BasicCCDBManager
129- o2::ccdb::BasicCCDBManager& ccdbManager = o2::ccdb::BasicCCDBManager::instance ();
130111 ccdbManager.clearCache ();
131- ccdbManager.setURL (ccdbUrl);
132112 ccdbManager.setCaching (true ); // This is what we want to test.
133113
134114 // / ━━━━━━━━━━━ ACT ━━━━━━━━━━━━
@@ -193,20 +173,21 @@ BOOST_AUTO_TEST_CASE(testNonCachedHeaders, *boost::unit_test::precondition(if_re
193173{
194174 // / ━━━━━━━ ARRANGE ━━━━━━━━━
195175 // First store objects to test with
196- test_fixture f;
197-
176+ auto & ccdbManager = o2::ccdb::BasicCCDBManager::instance ();
198177 std::string pathA = basePath + " NonCachingA" ;
199178 std::string pathB = basePath + " NonCachingB" ;
200179 std::string ccdbObjO = " testObjectO" ;
201180 std::string ccdbObjN = " testObjectN" ;
202- std::map<std::string, std::string> md = f.metadata ;
181+ std::map<std::string, std::string> md = {
182+ {" Hello" , " World" },
183+ {" Key1" , " Value1" },
184+ {" Key2" , " Value2" },
185+ };
203186 long start = 1000 , stop = 2000 ;
204- f. api .storeAsTFileAny (&ccdbObjO, pathA, md, start, stop);
205- f. api .storeAsTFileAny (&ccdbObjN, pathB, md, start, stop);
187+ ccdbManager. getCCDBAccessor () .storeAsTFileAny (&ccdbObjO, pathA, md, start, stop);
188+ ccdbManager. getCCDBAccessor () .storeAsTFileAny (&ccdbObjN, pathB, md, start, stop);
206189 // initilize the BasicCCDBManager
207- o2::ccdb::BasicCCDBManager& ccdbManager = o2::ccdb::BasicCCDBManager::instance ();
208190 ccdbManager.clearCache ();
209- ccdbManager.setURL (ccdbUrl);
210191 ccdbManager.setCaching (false ); // This is what we want to test, no caching
211192
212193 // / ━━━━━━━━━━━ ACT ━━━━━━━━━━━━
@@ -217,6 +198,7 @@ BOOST_AUTO_TEST_CASE(testNonCachedHeaders, *boost::unit_test::precondition(if_re
217198 auto * obj2 = ccdbManager.getForTimeStamp <std::string>(pathB, (start + stop) / 2 , &headers2);
218199 auto * obj3 = ccdbManager.getForTimeStamp <std::string>(pathA, (start + stop) / 2 , &headers3); // Should not be cached since explicitly disabled
219200
201+ ccdbManager.setCaching (true ); // Restore default state
220202 // / ━━━━━━━━━━━ ASSERT ━━━━━━━━━━━
221203 // / Check that we got something
222204 BOOST_REQUIRE (obj1 != nullptr );
@@ -249,12 +231,17 @@ BOOST_AUTO_TEST_CASE(testNonCachedHeaders, *boost::unit_test::precondition(if_re
249231 BOOST_TEST (headers3.size () != 0 );
250232 BOOST_TEST (headers2.size () != 0 );
251233 BOOST_TEST (headers1 != headers2, " The headers for different objects should be different" );
234+
235+ // cleanup
236+ delete obj1;
237+ delete obj2;
238+ delete obj3;
252239}
253240
254- BOOST_AUTO_TEST_CASE (CacheFirstRetrievalAndHeadersPersistence)
241+ BOOST_AUTO_TEST_CASE (CacheFirstRetrievalAndHeadersPersistence, * boost::unit_test::precondition (if_reachable()) )
255242{
256- test_fixture f;
257243 // / ━━━━━━━ ARRANGE ━━━━━━━━━
244+ auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
258245 // Prepare two validity slots for same path to test ETag change later
259246 std::string path = basePath + " ObjA" ;
260247 std::string objV1 = " ObjectVersion1" ;
@@ -268,11 +255,9 @@ BOOST_AUTO_TEST_CASE(CacheFirstRetrievalAndHeadersPersistence)
268255 long v2stop = v2start + (v1stop - v1start);
269256 long mid1 = (v1start + v1stop) / 2 ;
270257 // Store 2 versions
271- f. api .storeAsTFileAny (&objV1, path, meta1, v1start, v1stop);
272- f. api .storeAsTFileAny (&objV2, path, meta1, v2start, v2stop);
258+ mgr. getCCDBAccessor () .storeAsTFileAny (&objV1, path, meta1, v1start, v1stop);
259+ mgr. getCCDBAccessor () .storeAsTFileAny (&objV2, path, meta1, v2start, v2stop);
273260
274- auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
275- mgr.setURL (ccdbUrl);
276261 mgr.clearCache ();
277262 mgr.setCaching (true );
278263 mgr.setFatalWhenNull (true );
@@ -294,6 +279,8 @@ BOOST_AUTO_TEST_CASE(CacheFirstRetrievalAndHeadersPersistence)
294279 // 5) Fifth retrieval with headers again to check persistence
295280 auto * p5 = mgr.getForTimeStamp <std::string>(path, mid1, &headers5);
296281
282+ mgr.setFatalWhenNull (false ); // restore default
283+
297284 // / ━━━━━━━ASSERT━━━━━━━━━
298285
299286 BOOST_TEST (p1 != nullptr );
@@ -336,17 +323,16 @@ BOOST_AUTO_TEST_CASE(CacheFirstRetrievalAndHeadersPersistence)
336323 BOOST_TEST (headers5[" UserKey1" ] == " UValue1" ); // internal unchanged
337324}
338325
339- BOOST_AUTO_TEST_CASE (FailedFetchDoesNotGiveMetadata)
326+ BOOST_AUTO_TEST_CASE (FailedFetchDoesNotGiveMetadata, * boost::unit_test::precondition (if_reachable()) )
340327{
341- test_fixture f;
342328
343329 // / ━━━━━━━ ARRANGE ━━━━━━━━━
330+ auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
344331 std::string path = basePath + " FailThenRecover" ;
345332 std::string content = " ContentX" ;
346333 std::map<std::string, std::string> meta{{" Alpha" , " Beta" }};
347334 long s = 300'000 , e = 310'000 ;
348- f.api .storeAsTFileAny (&content, path, meta, s, e);
349- auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
335+ mgr.getCCDBAccessor ().storeAsTFileAny (&content, path, meta, s, e);
350336 mgr.clearCache ();
351337 mgr.setCaching (true );
352338 mgr.setFatalWhenNull (false );
@@ -368,17 +354,16 @@ BOOST_AUTO_TEST_CASE(FailedFetchDoesNotGiveMetadata)
368354 mgr.setFatalWhenNull (true );
369355}
370356
371- BOOST_AUTO_TEST_CASE (FirstCallWithoutHeadersThenWithHeaders)
357+ BOOST_AUTO_TEST_CASE (FirstCallWithoutHeadersThenWithHeaders, * boost::unit_test::precondition (if_reachable()) )
372358{
373- test_fixture f;
374359
360+ auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
375361 std::string path = basePath + " LateHeaders" ;
376362 std::string body = " Late" ;
377363 std::map<std::string, std::string> meta{{" LateKey" , " LateVal" }};
378364 long s = 400'000 , e = 410'000 ;
379- f. api .storeAsTFileAny (&body, path, meta, s, e);
365+ mgr. getCCDBAccessor () .storeAsTFileAny (&body, path, meta, s, e);
380366
381- auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
382367 mgr.clearCache ();
383368 mgr.setCaching (true );
384369 long ts = (s + e) / 2 ;
@@ -398,17 +383,16 @@ BOOST_AUTO_TEST_CASE(FirstCallWithoutHeadersThenWithHeaders)
398383 BOOST_TEST (h2.count (" Valid-Until" ) == 1 );
399384}
400385
401- BOOST_AUTO_TEST_CASE (HeadersAreStableAcrossMultipleHits)
386+ BOOST_AUTO_TEST_CASE (HeadersAreStableAcrossMultipleHits, * boost::unit_test::precondition (if_reachable()) )
402387{
403- test_fixture f;
404388
389+ auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
405390 std::string path = basePath + " StableHeaders" ;
406391 std::string body = " Stable" ;
407392 std::map<std::string, std::string> meta{{" HK" , " HV" }};
408393 long s = 500'000 , e = 510'000 ;
409- f. api .storeAsTFileAny (&body, path, meta, s, e);
394+ mgr. getCCDBAccessor () .storeAsTFileAny (&body, path, meta, s, e);
410395
411- auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
412396 mgr.clearCache ();
413397 mgr.setCaching (true );
414398 long ts = (s + e) / 2 ;
0 commit comments