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)
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)