Exemple #1
0
def startClients(reactor, runTimeInfo, UrlList, targetClients, timeout, intervalTime=0, stepNums=0):
	global SummaryList
	global RequestPerConnection
	global IsRun
	global MaxRequests
	global RequestSleepTime
	global PipelineNum
	global Clients
	
	moreClients = targetClients - len(Clients)
	if stepNums != 0 and moreClients > stepNums:
		moreClients = stepNums;
		
	prevSize = len(Clients)
	for i in range(0, moreClients):
		MIN = "0107777%04d" % (i + prevSize)
		c = eh.eh(reactor, runTimeInfo, RequestPerConnection, UrlList, MaxRequests, HostIP, Port, RequestSleepTime, MIN, PipelineNum)
		c.start()
		Clients.append(c)
	print "%d Clients started" % moreClients
	return moreClients
Exemple #2
0
def startRequest(reactor, runTimeInfo, UrlList, targetClients, timeout):
	global SummaryList
	global RequestPerConnection
	global IsRun
	global MaxRequests
	global RequestSleepTime
	global PipelineNum

	IsRun = True
	
	Clients = []

	for i in range(0, targetClients):
		MIN = "0100000%04d" % (i+1)
		c = eh.eh(reactor, runTimeInfo, RequestPerConnection, UrlList, MaxRequests, HostIP, Port, RequestSleepTime, MIN, PipelineNum)
		c.start()
		Clients.append(c)

		if RequestSleepTime > 0.0:
			try:
				time.sleep(RequestSleepTime/targetClients)
			except:
				pass

		sys.stdout.write(".")
		sys.stdout.flush()

	print ""

	programTimeout = time.time() + timeout
	programStartTime = time.time()

	# event loop
	oldRequestNum = 0
	while IsRun:
		newRequestNum = len(runTimeInfo)
		diffRequestNum = newRequestNum - oldRequestNum
		oldRequestNum = newRequestNum

		if log.getLogLevel() == 0:
			d = time.localtime(time.time())
			dstr =  "%02d:%02d:%02d" % (d[3], d[4], d[5])
			if timeout > 0:
				leftTime = programTimeout - time.time()
				print dstr, "Clients: %d/%d, Request: %d(+%3d), ConFail: %d, Timeout: %d, Recv: %.1fM, LeftTime: %dsec" % \
					(getConnectionCount(Clients), len(Clients), newRequestNum, diffRequestNum, getConnectionFailCount(Clients), getSelectTimeoutCount(Clients), getRecvDataSize(Clients)/1024.0/1024.0, leftTime)

			elif MaxRequests > 0:
				print dstr, "Clients: %d/%d, Request: %d(+%3d)/%d, ConFail: %d, Timeout: %d, Recv: %.1fM" % \
					(getConnectionCount(Clients), len(Clients), newRequestNum, diffRequestNum, MaxRequests, getConnectionFailCount(Clients), getSelectTimeoutCount(Clients), getRecvDataSize(Clients)/1024.0/1024.0)

			else:
				print dstr, "Clients: %d/%d, Request: %d(+%3d), ConFail: %d, Timeout: %d, Recv: %.1fM" % \
					(getConnectionCount(Clients), len(Clients), newRequestNum, diffRequestNum, getConnectionFailCount(Clients), getSelectTimeoutCount(Clients), getRecvDataSize(Clients)/1024.0/1024.0)

		# 종료 조건 확인
		if MaxRequests > 0 and len(runTimeInfo) >= MaxRequests:
			IsRun = False
			break

		if timeout > 0 and programTimeout < time.time():
			break

		try:
			time.sleep(1)
		except:
			pass

	for c in Clients:
		c.isRun = False

	programEndTime = time.time()
	programRunTime = programEndTime - programStartTime
	
	for c in Clients:
		c.join()
		c.close()
		del c


	

	strSummary = getSummary(runTimeInfo, programRunTime, getConnectionSuccessCount(Clients), targetClients, getConnectionFailCount(Clients), getSelectTimeoutCount(Clients), getActiveClose(Clients))

	print "-----------------------------------------------------------------------"
	print strSummary

	#filename = "c%03d_sizeBasedTime.csv" % targetClients
	#saveSizeBasedTime(filename, runTimeInfo, strSummary)

	#filename = "c%03d_runTimeInfo.csv" % targetClients
	#saveRunTimeInfo(filename, runTimeInfo)

	stats = getSummaryStats(runTimeInfo, programRunTime, getConnectionSuccessCount(Clients), targetClients, getConnectionFailCount(Clients), getSelectTimeoutCount(Clients), getActiveClose(Clients))

	return stats