def test_read_corrupt_file(self):
     handle, state_file = tempfile.mkstemp()
     os.write(handle, "wibble")
     os.close(handle)
     state_keeper = state.StateKeeper(state_file)
     self.assertRaises(state.CorruptStateError, state_keeper.read,
                       client_pb2.MonitorState)
     os.remove(state_file)
 def test_read_write(self):
     handle, state_file = tempfile.mkstemp()
     os.close(handle)
     state_keeper = state.StateKeeper(state_file)
     state_keeper.write(self._DEFAULT_STATE)
     self.assertEqual(self._DEFAULT_STATE,
                      state_keeper.read(client_pb2.MonitorState))
     os.remove(state_file)
Example #3
0
    def __init__(self, ct_logs, db, temp_db_factory, monitor_state_dir):
        """Initialize from a CtLogs proto."""
        threading.Thread.__init__(self)

        self.__monitors = []
        self.__db = db
        for log in ct_logs.ctlog:
            if not log.log_server or not log.log_id or not log.public_key_info:
                raise RuntimeError("Cannot start monitor: log proto has "
                                   "missing or empty fields: %s" % log)
            client = log_client.LogClient(log.log_server)
            hasher = merkle.TreeHasher()
            verifier = verify.LogVerifier(log.public_key_info,
                                          merkle.MerkleVerifier(hasher))
            state_keeper = state.StateKeeper(FLAGS.monitor_state_dir + "/" +
                                             log.log_id)
            temp_db = temp_db_factory.create_storage(log.log_server)
            self.__monitors.append(
                monitor.Monitor(client, verifier, hasher, db, temp_db,
                                state_keeper))

        self.__last_update_start_time = 0
        self.__stopped = False
 def test_read_no_such_file(self):
     temp_dir = tempfile.mkdtemp()
     state_keeper = state.StateKeeper(temp_dir + "/foo")
     self.assertRaises(state.FileNotFoundError, state_keeper.read,
                       client_pb2.MonitorState)