def test_load_state_sets_values_to_saved_values(self): # Set Redis values manually hash_name = Keys.get_hash_blockchain(self.blockchain.name) self.redis.hset_multiple_unsafe( hash_name, { Keys.get_blockchain_referendum_count(self.blockchain.name): self.dummy_referendum_count, Keys.get_blockchain_public_prop_count(self.blockchain.name): self.dummy_public_prop_count, Keys.get_blockchain_council_prop_count(self.blockchain.name): self.dummy_council_prop_count, Keys.get_blockchain_validator_set_size(self.blockchain.name): self.dummy_validator_set_size, }) # Load the Redis values self.blockchain.load_state(self.logger) # Assert self.assertEqual(self.blockchain.referendum_count, self.dummy_referendum_count) self.assertEqual(self.blockchain.public_prop_count, self.dummy_public_prop_count) self.assertEqual(self.blockchain.council_prop_count, self.dummy_council_prop_count) self.assertEqual(self.blockchain.validator_set_size, self.dummy_validator_set_size)
def save_state(self, logger: logging.Logger) -> None: # If Redis is enabled, store the current state if self._redis_enabled: logger.debug( 'Saving %s state: _referendum_count=%s, ' '_public_prop_count=%s, _council_prop_count=%s, ' '_validator_set_size=%s', self.name, self._referendum_count, self._public_prop_count, self._council_prop_count, self._validator_set_size) # Set values self._redis.hset_multiple(self._redis_hash, { Keys.get_blockchain_referendum_count(self.name): self._referendum_count, Keys.get_blockchain_public_prop_count(self.name): self._public_prop_count, Keys.get_blockchain_council_prop_count(self.name): self._council_prop_count, Keys.get_blockchain_validator_set_size(self.name): self._validator_set_size })
def load_state(self, logger: logging.Logger) -> None: # If Redis is enabled, load any previously stored state if self._redis_enabled: self._referendum_count = self._redis.hget_int( self._redis_hash, Keys.get_blockchain_referendum_count(self.name), None) self._public_prop_count = self._redis.hget_int( self._redis_hash, Keys.get_blockchain_public_prop_count(self.name), None) self._council_prop_count = self._redis.hget_int( self._redis_hash, Keys.get_blockchain_council_prop_count(self.name), None) self._validator_set_size = self._redis.hget_int( self._redis_hash, Keys.get_blockchain_validator_set_size(self.name), None) logger.debug( 'Restored %s state: _referendum_count=%s, ' '_public_prop_count=%s, _council_prop_count=%s, ' '_validator_set_size=%s', self.name, self._referendum_count, self._public_prop_count, self._council_prop_count, self._validator_set_size)
def test_save_state_sets_values_to_current_values(self): # Set blockchain values manually self.blockchain.set_referendum_count(self.dummy_referendum_count, self.channel_set, self.logger) self.blockchain.set_council_prop_count(self.dummy_council_prop_count, self.channel_set, self.logger) self.blockchain.set_public_prop_count(self.dummy_public_prop_count, self.channel_set, self.logger) self.blockchain.set_validator_set_size(self.dummy_validator_set_size, self.channel_set, self.logger) # Save the values to Redis self.blockchain.save_state(self.logger) # Assert hash_name = Keys.get_hash_blockchain(self.blockchain.name) self.assertEqual( self.redis.hget_int_unsafe( hash_name, Keys.get_blockchain_referendum_count(self.blockchain.name)), self.dummy_referendum_count) self.assertEqual( self.redis.hget_int_unsafe( hash_name, Keys.get_blockchain_public_prop_count(self.blockchain.name)), self.dummy_public_prop_count) self.assertEqual( self.redis.hget_int_unsafe( hash_name, Keys.get_blockchain_council_prop_count(self.blockchain.name)), self.dummy_council_prop_count) self.assertEqual( self.redis.hget_int_unsafe( hash_name, Keys.get_blockchain_validator_set_size(self.blockchain.name)), self.dummy_validator_set_size)