Example #1
0
	def __init__(self, selfNodeAddr, otherNodeAddrs,
				 testType = TEST_TYPE.DEFAULT,
				 compactionMinEntries = 0,
				 dumpFile = None,
				 journalFile = None,
				 password = None,
				 dynamicMembershipChange = False,
				 useFork = True,
				 testBindAddr = False):

		cfg = SyncObjConf(autoTick=False, appendEntriesUseBatch=False)
		cfg.appendEntriesPeriod = 0.1
		cfg.raftMinTimeout = 0.5
		cfg.raftMaxTimeout = 1.0
		cfg.dynamicMembershipChange = dynamicMembershipChange

		if testBindAddr:
			cfg.bindAddress = selfNodeAddr

		if dumpFile is not None:
			cfg.fullDumpFile = dumpFile

		if password is not None:
			cfg.password = password

		cfg.useFork = useFork

		if testType == TEST_TYPE.COMPACTION_1:
			cfg.logCompactionMinEntries = compactionMinEntries
			cfg.logCompactionMinTime = 0.1
			cfg.appendEntriesUseBatch = True

		if testType == TEST_TYPE.COMPACTION_2:
			cfg.logCompactionMinEntries = 99999
			cfg.logCompactionMinTime = 99999
			cfg.fullDumpFile = dumpFile

		if testType == TEST_TYPE.RAND_1:
			cfg.autoTickPeriod = 0.05
			cfg.appendEntriesPeriod = 0.02
			cfg.raftMinTimeout = 0.1
			cfg.raftMaxTimeout = 0.2
			cfg.logCompactionMinTime = 9999999
			cfg.logCompactionMinEntries = 9999999
			cfg.journalFile = journalFile

		if testType == TEST_TYPE.JOURNAL_1:
			cfg.logCompactionMinTime = 999999
			cfg.logCompactionMinEntries = 999999
			cfg.fullDumpFile = dumpFile
			cfg.journalFile = journalFile

		if testType == TEST_TYPE.AUTO_TICK_1:
			cfg.autoTick = True
			cfg.pollerType = 'select'

		if testType == TEST_TYPE.WAIT_BIND:
			cfg.maxBindRetries = 1
			cfg.autoTick = True

		super(TestObj, self).__init__(selfNodeAddr, otherNodeAddrs, cfg)
		self.__counter = 0
		self.__data = {}
Example #2
0
	def __init__(self, selfNodeAddr, otherNodeAddrs,
				 compactionTest = 0,
				 dumpFile = None,
				 compactionTest2 = False,
				 password = None):

		cfg = SyncObjConf(autoTick=False, commandsQueueSize=10000, appendEntriesUseBatch=False)
		if compactionTest:
			cfg.logCompactionMinEntries = compactionTest
			cfg.logCompactionMinTime = 0.1
			cfg.appendEntriesUseBatch = True
			cfg.fullDumpFile = dumpFile
		if compactionTest2:
			cfg.logCompactionMinEntries = 99999
			cfg.logCompactionMinTime = 99999
			cfg.fullDumpFile = dumpFile
			cfg.sendBufferSize = 2 ** 21
			cfg.recvBufferSize = 2 ** 21
			cfg.appendEntriesBatchSize = 10
			cfg.maxCommandsPerTick = 5
		if password is not None:
			cfg.password = password

		super(TestObj, self).__init__(selfNodeAddr, otherNodeAddrs, cfg)
		self.__counter = 0
		self.__data = {}
Example #3
0
	def __init__(self, selfAddr, otherAddrs, consumers):
		cfg = SyncObjConf(autoTick=False)
		super(ZeroDeployTestObj, self).__init__(selfAddr, otherAddrs, cfg, consumers=consumers)
Example #4
0
	def __init__(self, selfNodeAddr, otherNodeAddrs,
				 testType = TEST_TYPE.DEFAULT,
				 compactionMinEntries = 0,
				 dumpFile = None,
				 password = None,
				 dynamicMembershipChange = False):

		cfg = SyncObjConf(autoTick=False, appendEntriesUseBatch=False)
		cfg.appendEntriesPeriod = 0.1
		cfg.raftMinTimeout = 0.5
		cfg.raftMaxTimeout = 1.0
		cfg.dynamicMembershipChange = dynamicMembershipChange

		if dumpFile is not None:
			cfg.fullDumpFile = dumpFile

		if password is not None:
			cfg.password = password

		if testType == TEST_TYPE.COMPACTION_1:
			cfg.logCompactionMinEntries = compactionMinEntries
			cfg.logCompactionMinTime = 0.1
			cfg.appendEntriesUseBatch = True

		if testType == TEST_TYPE.COMPACTION_2:
			cfg.logCompactionMinEntries = 99999
			cfg.logCompactionMinTime = 99999
			cfg.fullDumpFile = dumpFile

		if testType == TEST_TYPE.RAND_1:
			cfg.autoTickPeriod = 0.05
			cfg.appendEntriesPeriod = 0.02
			cfg.raftMinTimeout = 0.1
			cfg.raftMaxTimeout = 0.2
			cfg.logCompactionMinTime = 9999999
			cfg.logCompactionMinEntries = 9999999

		super(TestObj, self).__init__(selfNodeAddr, otherNodeAddrs, cfg)
		self.__counter = 0
		self.__data = {}
Example #5
0
	def __init__(self, selfNodeAddr, otherNodeAddrs,
				 compactionTest = 0,
				 dumpFile = None,
				 compactionTest2 = False,
				 password = None,
				 randTest = False):

		cfg = SyncObjConf(autoTick=False, appendEntriesUseBatch=False)
		cfg.appendEntriesPeriod = 0.1
		cfg.raftMinTimeout = 0.5
		cfg.raftMaxTimeout = 1.0
		if compactionTest:
			cfg.logCompactionMinEntries = compactionTest
			cfg.logCompactionMinTime = 0.1
			cfg.appendEntriesUseBatch = True
			cfg.fullDumpFile = dumpFile
		if compactionTest2:
			cfg.logCompactionMinEntries = 99999
			cfg.logCompactionMinTime = 99999
			cfg.fullDumpFile = dumpFile
		if password is not None:
			cfg.password = password
		if randTest:
			cfg.autoTickPeriod = 0.05
			cfg.appendEntriesPeriod = 0.02
			cfg.raftMinTimeout = 0.1
			cfg.raftMaxTimeout = 0.2
			cfg.logCompactionMinTime = 9999999
			cfg.logCompactionMinEntries = 9999999

		super(TestObj, self).__init__(selfNodeAddr, otherNodeAddrs, cfg)
		self.__counter = 0
		self.__data = {}
Example #6
0
 def setUp(self):
     self.conf = SyncObjConf(appendEntriesUseBatch=False,
                             dynamicMembershipChange=True,
                             autoTick=False)
     self.so = DynMemberSyncObj('127.0.0.1:1234', ['127.0.0.1:1235'],
                                self.conf)
Example #7
0
 def __init__(self, my_addr, peers):
     cfg = SyncObjConf(dynamicMembershipChange=True)
     super().__init__(my_addr, peers, cfg)
     self.__data = []
Example #8
0
    def __init__(self, port, members, secret=""):
        JSBASE.__init__(self)

        self._members = members
        self.port = port
        self.dict1 = ReplDict()

        remotes = ["%s:%s" % item for item in self.members]

        cfg = SyncObjConf(autoTick=True)
        cfg.onReady = self.onReady
        if secret is not "" and secret is not None:
            print("SECRET")
            cfg.password = secret

        cfg.appendEntriesPeriod = 0.01
        cfg.appendEntriesUseBatch = True
        cfg.raftMinTimeout = 0.4
        cfg.raftMaxTimeout = 1.4
        cfg.dynamicMembershipChange = True
        cfg.onStateChanged = None
        cfg.commandsWaitLeader = False
        cfg.connectionRetryTime = 5.0  # connect to other down nodes every so many secs
        cfg.connectionTimeout = 3.5
        cfg.leaderFallbackTimeout = 10.0
        cfg.journalFile = "/tmp/raft/raft_%s" % self.port
        cfg.leaderFallbackTimeout = True
        cfg.logCompactionMinEntries = 1000
        cfg.logCompactionMinTime = 60

        self._log_debug("port:%s" % self.port)
        self._log_debug("members:%s" % remotes)
        # self._log_debug("secret:%s"%secret)

        self.syncobj = SyncObj("localhost:%s" % port,
                               remotes,
                               consumers=[self.dict1],
                               conf=cfg)

        # for i in range(100000000):
        #     time.sleep(0.001)
        #     # self.syncobj.doTick()
        #     from IPython import embed;embed(colors='Linux')
        #     s

        while self.syncobj.isReady() == False:
            time.sleep(1)
            print("wait sync")
        time.sleep(1)
        self.start()
Example #9
0
        _g_success += 1
        callTime, recvTime = res
        delay = time.time() - callTime
        _g_delays.append(delay)
    else:
        _g_error += 1
        _g_errors[err] += 1

def getRandStr(l):
    f = '%0' + str(l) + 'x'
    return f % random.randrange(16 ** l)

if __name__ == '__main__':
    # Parse parameters
    numCommands, cmdSize, quorumSize1, quorumSize2, drop_ratio, selfAddr, partners = parseParams(sys.argv)
    maxCommandsQueueSize = int(0.9 * SyncObjConf().commandsQueueSize / len(partners))

    # Init a TestObj
    obj = TestObj(selfAddr, partners, quorumSize1, quorumSize2, drop_ratio)

    while obj._getLeader() is None:
        time.sleep(0.5)

    time.sleep(4.0)

    startTime = time.time()

    while time.time() - startTime < 25.0:
        st = time.time()
        for i in range(0, numCommands):
            obj.testMethod(getRandStr(cmdSize), time.time(), callback=clbck)
Example #10
0
 def __init__(self, selfNodeAddr, otherNodeAddrs, quorumSize1=0, quorumSize2=0, drop_ratio=0.0):
     cfg = SyncObjConf(
         appendEntriesUseBatch=False,
     )
     super(TestObj, self).__init__(selfNodeAddr, otherNodeAddrs, quorumSize1, quorumSize2, drop_ratio, cfg)
     self.__appliedCommands = 0
Example #11
0
def start_manager(host='localhost',
                  port=7070,
                  peer_addr=None,
                  snapshot_file='/tmp/cockatrice/management.zip',
                  log_compaction_min_entries=5000,
                  log_compaction_min_time=300,
                  data_dir='/tmp/cockatrice/management',
                  grpc_port=5050,
                  grpc_max_workers=10,
                  http_port=8080,
                  log_level='DEBUG',
                  log_file=None,
                  log_file_max_bytes=512000000,
                  log_file_backup_count=5,
                  http_log_file=None,
                  http_log_file_max_bytes=512000000,
                  http_log_file_backup_count=5):
    # create logger and handler
    logger = getLogger(NAME)
    log_handler = StreamHandler()

    # determine log destination
    if log_file is not None:
        log_handler = RotatingFileHandler(log_file,
                                          'a+',
                                          maxBytes=log_file_max_bytes,
                                          backupCount=log_file_backup_count)

    # determine log level
    if log_level in ['CRITICAL', 'FATAL']:
        logger.setLevel(CRITICAL)
        log_handler.setLevel(CRITICAL)
    elif log_level == 'ERROR':
        logger.setLevel(ERROR)
        log_handler.setLevel(ERROR)
    elif log_level in ['WARNING', 'WARN']:
        logger.setLevel(WARNING)
        log_handler.setLevel(WARNING)
    elif log_level == 'INFO':
        logger.setLevel(INFO)
        log_handler.setLevel(INFO)
    elif log_level == 'DEBUG':
        logger.setLevel(DEBUG)
        log_handler.setLevel(DEBUG)
    elif log_level == 'NOTSET':
        logger.setLevel(NOTSET)
        log_handler.setLevel(NOTSET)
    else:
        logger.setLevel(INFO)
        log_handler.setLevel(INFO)

    # set log format
    handler_format = Formatter(
        '%(asctime)s - %(levelname)s - %(pathname)s:%(lineno)d - %(message)s')
    log_handler.setFormatter(handler_format)

    # add log handler
    logger.addHandler(log_handler)

    # create http logger and handler
    http_logger = getLogger(NAME + '_http')
    http_log_handler = StreamHandler()

    # determine http log destination
    if http_log_file is not None:
        http_log_handler = RotatingFileHandler(
            http_log_file,
            'a+',
            maxBytes=http_log_file_max_bytes,
            backupCount=http_log_file_backup_count)

    # determine http log level
    http_logger.setLevel(INFO)
    http_log_handler.setLevel(INFO)

    # set http log format
    http_handler_format = Formatter('%(message)s')
    http_log_handler.setFormatter(http_handler_format)

    # add http log handler
    http_logger.addHandler(http_log_handler)

    # metrics registry
    metrics_registry = CollectorRegistry()

    # sync config
    os.makedirs(os.path.dirname(snapshot_file), exist_ok=True)
    conf = SyncObjConf()
    conf.fullDumpFile = snapshot_file
    conf.logCompactionMinEntries = log_compaction_min_entries
    conf.logCompactionMinTime = log_compaction_min_time
    conf.dynamicMembershipChange = True
    conf.validate()

    supervisor = None
    try:
        supervisor = Manager(host=host,
                             port=port,
                             seed_addr=peer_addr,
                             conf=conf,
                             data_dir=data_dir,
                             grpc_port=grpc_port,
                             grpc_max_workers=grpc_max_workers,
                             http_port=http_port,
                             logger=logger,
                             http_logger=http_logger,
                             metrics_registry=metrics_registry)
        while True:
            signal.pause()
    except Exception as ex:
        print(ex)
    finally:
        if supervisor is not None:
            supervisor.stop()
Example #12
0
 def __init__(self, selfAddress, partnerAddrs):
     cfg = SyncObjConf(dynamicMembershipChange = True)
     super(KVStorage, self).__init__(selfAddress, partnerAddrs, cfg)
     self.__data = {}
Example #13
0
	def __init__(self, selfNodeAddr, otherNodeAddrs,
				 compactionTest = 0,
				 dumpFile = None,
				 compactionTest2 = False):

		cfg = SyncObjConf(autoTick=False, commandsQueueSize=10000, appendEntriesUseBatch=False)
		if compactionTest:
			cfg.logCompactionMinEntries = compactionTest
			cfg.logCompactionMinTime = 0.1
			cfg.appendEntriesUseBatch = True
			cfg.fullDumpFile = dumpFile
		if compactionTest2:
			cfg.logCompactionMinEntries = 99999
			cfg.logCompactionMinTime = 99999
			cfg.fullDumpFile = dumpFile
			cfg.sendBufferSize = 2 ** 21
			cfg.recvBufferSize = 2 ** 21
			cfg.appendEntriesBatchSize = 10
			cfg.maxCommandsPerTick = 5

		super(TestObj, self).__init__(selfNodeAddr, otherNodeAddrs, cfg)
		self.__counter = 0
		self.__data = {}
Example #14
0
 def __init__(self, selfAddress, partnerAddress):
     cfg = SyncObjConf(dynamicMembershipChange=True)
     super(FTStack, self).__init__(selfAddress, partnerAddress, cfg)
     self.data = {}
     self.sid = {}
     self.counter = -1
Example #15
0
    def __init__(self,
                 selfNodeAddr,
                 otherNodeAddrs,
                 testType=TEST_TYPE.DEFAULT,
                 compactionMinEntries=0,
                 dumpFile=None,
                 journalFile=None,
                 password=None,
                 dynamicMembershipChange=False,
                 useFork=True):

        cfg = SyncObjConf(autoTick=False, appendEntriesUseBatch=False)
        cfg.appendEntriesPeriod = 0.1
        cfg.raftMinTimeout = 0.5
        cfg.raftMaxTimeout = 1.0
        cfg.dynamicMembershipChange = dynamicMembershipChange

        if dumpFile is not None:
            cfg.fullDumpFile = dumpFile

        if password is not None:
            cfg.password = password

        cfg.useFork = useFork

        if testType == TEST_TYPE.COMPACTION_1:
            cfg.logCompactionMinEntries = compactionMinEntries
            cfg.logCompactionMinTime = 0.1
            cfg.appendEntriesUseBatch = True

        if testType == TEST_TYPE.COMPACTION_2:
            cfg.logCompactionMinEntries = 99999
            cfg.logCompactionMinTime = 99999
            cfg.fullDumpFile = dumpFile

        if testType == TEST_TYPE.RAND_1:
            cfg.autoTickPeriod = 0.05
            cfg.appendEntriesPeriod = 0.02
            cfg.raftMinTimeout = 0.1
            cfg.raftMaxTimeout = 0.2
            cfg.logCompactionMinTime = 9999999
            cfg.logCompactionMinEntries = 9999999
            cfg.journalFile = journalFile

        if testType == TEST_TYPE.JOURNAL_1:
            cfg.logCompactionMinTime = 999999
            cfg.logCompactionMinEntries = 999999
            cfg.fullDumpFile = dumpFile
            cfg.journalFile = journalFile

        if testType == TEST_TYPE.AUTO_TICK_1:
            cfg.autoTick = True
            cfg.pollerType = 'select'

        super(TestObj, self).__init__(selfNodeAddr, otherNodeAddrs, cfg)
        self.__counter = 0
        self.__data = {}