~free.ekanayaka/landscape-client/lucid-1.5.0-0ubuntu0.10.04.0

« back to all changes in this revision

Viewing changes to landscape/broker/tests/test_store.py

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2009-03-18 20:42:05 UTC
  • Revision ID: james.westby@ubuntu.com-20090318204205-v17ejhu5urdsrm7j
Tags: 1.0.28-0ubuntu1
New upstream release. (LP: #343954)

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
        super(MessageStoreTest, self).setUp()
18
18
        self.time = 0
19
19
        self.temp_dir = tempfile.mkdtemp()
20
 
        self.persist = Persist()
21
 
        self.store = MessageStore(self.persist,
22
 
                                  self.temp_dir, 20, get_time=self.get_time)
23
 
        self.store.set_accepted_types(["empty", "data"])
24
 
        self.store.add_schema(Message("empty", {}))
25
 
        self.store.add_schema(Message("empty2", {}))
26
 
        self.store.add_schema(Message("data", {"data": String()}))
27
 
        self.store.add_schema(Message("unaccepted", {"data": String()}))
 
20
        self.persist_filename = tempfile.mktemp()
 
21
        self.persist = Persist(filename=self.persist_filename)
 
22
        self.store = self.create_store()
 
23
 
 
24
    def create_store(self):
 
25
        persist = Persist(filename=self.persist_filename)
 
26
        store = MessageStore(persist, self.temp_dir, 20, get_time=self.get_time)
 
27
        store.set_accepted_types(["empty", "data"])
 
28
        store.add_schema(Message("empty", {}))
 
29
        store.add_schema(Message("empty2", {}))
 
30
        store.add_schema(Message("data", {"data": String()}))
 
31
        store.add_schema(Message("unaccepted", {"data": String()}))
 
32
        return store
28
33
 
29
34
    def tearDown(self):
30
35
        super(MessageStoreTest, self).tearDown()
31
36
        shutil.rmtree(self.temp_dir)
 
37
        if os.path.isfile(self.persist_filename):
 
38
            os.unlink(self.persist_filename)
32
39
 
33
40
    def get_time(self):
34
41
        return self.time
35
42
 
36
 
    def test_get_sequence(self):
 
43
    def test_get_set_sequence(self):
37
44
        self.assertEquals(self.store.get_sequence(), 0)
38
45
        self.store.set_sequence(3)
39
46
        self.assertEquals(self.store.get_sequence(), 3)
40
47
 
 
48
        # Ensure it's actually saved.
 
49
        self.store.commit()
 
50
        store = self.create_store()
 
51
        self.assertEquals(store.get_sequence(), 3)
 
52
 
 
53
    def test_get_set_server_sequence(self):
 
54
        self.assertEquals(self.store.get_server_sequence(), 0)
 
55
        self.store.set_server_sequence(3)
 
56
        self.assertEquals(self.store.get_server_sequence(), 3)
 
57
 
 
58
        # Ensure it's actually saved.
 
59
        self.store.commit()
 
60
        store = self.create_store()
 
61
        self.assertEquals(store.get_server_sequence(), 3)
 
62
 
 
63
    def test_get_set_server_uuid(self):
 
64
        self.assertEquals(self.store.get_server_uuid(), None)
 
65
        self.store.set_server_uuid("abcd-efgh")
 
66
        self.assertEquals(self.store.get_server_uuid(), "abcd-efgh")
 
67
 
 
68
        # Ensure it's actually saved.
 
69
        self.store.commit()
 
70
        store = self.create_store()
 
71
        self.assertEquals(store.get_server_uuid(), "abcd-efgh")
 
72
 
41
73
    def test_get_pending_offset(self):
42
74
        self.assertEquals(self.store.get_pending_offset(), 0)
43
75
        self.store.set_pending_offset(3)
242
274
        If the server gets unplugged halfway through writing a file,
243
275
        the message should not be half-written.
244
276
        """
245
 
        store = MessageStore(self.persist, self.temp_dir,
246
 
                             get_time=self.get_time)
247
 
        store.add_schema(Message("data", {"data": Int()}))
248
 
        store.add({"type": "data", "data": 1})
 
277
        self.store.add_schema(Message("data", {"data": Int()}))
 
278
        self.store.add({"type": "data", "data": 1})
249
279
        # We simulate it by creating a fake file which raises halfway through
250
280
        # writing a file.
251
281
        replaced_file_factory = self.mocker.replace("__builtin__.open",
257
287
        # This kind of ensures that raising an exception is somewhat
258
288
        # similar to unplugging the power -- i.e., we're not relying
259
289
        # on special exception-handling in the file-writing code.
260
 
        self.assertRaises(IOError, store.add, {"type": "data", "data": 2})
 
290
        self.assertRaises(IOError, self.store.add, {"type": "data", "data": 2})
261
291
        self.mocker.verify()
262
292
        self.mocker.reset()
263
 
        self.assertEquals(store.get_pending_messages(),
264
 
                          [{"type": "data", "data": 1,
265
 
                            "api": API}])
 
293
        self.assertEquals(self.store.get_pending_messages(),
 
294
                         [{"type": "data", "data": 1, "api": API}])
266
295
 
267
296
    def test_api_attribute(self):
268
297
        self.assertEquals(self.store.api, API)