Implement context storage handles.
[shibboleth/cpp-xmltooling.git] / xmltoolingtest / MemoryStorageServiceTest.h
1 /*\r
2  *  Copyright 2001-2006 Internet2\r
3  * \r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 #include "XMLObjectBaseTestCase.h"\r
18 \r
19 #include <xmltooling/util/StorageService.h>\r
20 \r
21 class MemoryStorageServiceTest : public CxxTest::TestSuite {\r
22 public:\r
23     void setUp() {\r
24     }\r
25     \r
26     void tearDown() {\r
27     }\r
28 \r
29     void testMemoryService() {\r
30         auto_ptr<StorageService> storage(\r
31             XMLToolingConfig::getConfig().StorageServiceManager.newPlugin(MEMORY_STORAGE_SERVICE,NULL)\r
32             );\r
33         auto_ptr<StorageService::StorageHandle> handle(storage->createHandle());\r
34 \r
35         string data;\r
36         TSM_ASSERT("Record found in storage.", !storage->readString(handle.get(), "foo1", data));\r
37         storage->createString(handle.get(), "foo1", "bar1", time(NULL) - 300);\r
38         storage->createString(handle.get(), "foo2", "bar2", time(NULL));\r
39         TSM_ASSERT("Record not found in storage.", storage->readString(handle.get(), "foo1", data));\r
40         TSM_ASSERT_EQUALS("Record value doesn't match.", data, "bar1");\r
41         TSM_ASSERT("Update failed.", storage->updateString(handle.get(), "foo2", "bar1"));\r
42         TSM_ASSERT("Record not found in storage.", storage->readString(handle.get(), "foo2", data));\r
43         TSM_ASSERT_EQUALS("Record value doesn't match.", data, "bar1");\r
44         TSM_ASSERT("Delete failed.", storage->deleteString(handle.get(), "foo2"));\r
45         storage->reap(handle.get());\r
46         Thread::sleep(1);\r
47     }\r
48 };\r