Пример #1
0
 def setUp(self):
     try:
         os.makedirs(_TEST_DIR)
     except OSError as e:
         if e.errno != errno.EEXIST:
             raise
     try:
         os.unlink(_TEST_STORE_FILE)
     except OSError as e:
         if e.errno != errno.ENOENT:
             raise
     self.store = JsonStore(_TEST_STORE_NAME, _TEST_DIR)
Пример #2
0
 def get_queue(self):
     from pdagent.pdqueue import PDQueue
     from pdagent.jsonstore import JsonStore
     backoff_db = JsonStore("backoff", self.default_dirs["db_dir"])
     backoff_interval = self.main_config["backoff_interval_secs"]
     retry_limit_for_possible_errors = \
         self.main_config["retry_limit_for_possible_errors"]
     counter_db = JsonStore("aggregates", self.default_dirs["db_dir"])
     return PDQueue(
         lock_class=FileLock,
         queue_dir=self.default_dirs["outqueue_dir"],
         time_calc=time,
         event_size_max_bytes=4 * 1024 * 1024,  # 4MB limit.
         backoff_db=backoff_db,
         backoff_interval=backoff_interval,
         retry_limit_for_possible_errors=retry_limit_for_possible_errors,
         counter_db=counter_db)
Пример #3
0
 def test_write_and_read(self):
     j = {
         "foo": "bar",
         "baz": 1
         }
     self.store.set(j)
     self.assertEqual(self.store.get(), j)
     # ensure that json is persisted.
     self.assertTrue(os.path.isfile(_TEST_STORE_FILE))
     fp = None
     try:
         fp = open(_TEST_STORE_FILE, "r")
         self.assertEqual(json.load(fp), j)
     finally:
         if fp:
             fp.close()
     # ensure that a different store can pick up persisted content.
     self.assertEqual(JsonStore(_TEST_STORE_NAME, _TEST_DIR).get(), j)
Пример #4
0
class JsonStoreTest(unittest.TestCase):

    def setUp(self):
        try:
            os.makedirs(_TEST_DIR)
        except OSError as e:
            if e.errno != errno.EEXIST:
                raise
        try:
            os.unlink(_TEST_STORE_FILE)
        except OSError as e:
            if e.errno != errno.ENOENT:
                raise
        self.store = JsonStore(_TEST_STORE_NAME, _TEST_DIR)

    def test_first_read(self):
        j = self.store.get()
        self.assertTrue(j is None)

    def test_write_and_read(self):
        j = {
            "foo": "bar",
            "baz": 1
            }
        self.store.set(j)
        self.assertEqual(self.store.get(), j)
        # ensure that json is persisted.
        self.assertTrue(os.path.isfile(_TEST_STORE_FILE))
        fp = None
        try:
            fp = open(_TEST_STORE_FILE, "r")
            self.assertEqual(json.load(fp), j)
        finally:
            if fp:
                fp.close()
        # ensure that a different store can pick up persisted content.
        self.assertEqual(JsonStore(_TEST_STORE_NAME, _TEST_DIR).get(), j)

    def test_failed_write(self):
        j = {
            "foo": "bar",
            "baz": True
            }
        self.store.set(j)   # successful write.
        # now make file not writable, and check that set fails.
        try:
            os.chmod(_TEST_DIR, stat.S_IREAD | stat.S_IEXEC)
            k = dict(j)
            k["baz"] = False
            self.assertRaises(IOError, self.store.set, k)
            # old value is retained in this case.
            self.assertEqual(self.store.get(), j)
        finally:
            os.chmod(
                _TEST_DIR,
                stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC)

    def test_bad_data(self):
        j = {
            "foo": "bar",
            "baz": True
            }
        self.store.set(j)   # successful write.
        # now corrupt the persisted data.
        out = open(_TEST_STORE_FILE, "w")
        out.write("bad json!")
        out.close()
        # bad json => data is cleared.
        self.assertEqual(self.store.get(), None)