new
This commit is contained in:
parent
e64af682dc
commit
ec14ad4e99
75
smmapdfw/test/Connector.py
Normal file
75
smmapdfw/test/Connector.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import socket
|
||||||
|
import time
|
||||||
|
from threading import Thread, activeCount
|
||||||
|
|
||||||
|
|
||||||
|
class NetStringError(ValueError): pass
|
||||||
|
|
||||||
|
def NetStringDecode(s):
|
||||||
|
try:
|
||||||
|
length, data = s.split(':', 1)
|
||||||
|
except ValueError:
|
||||||
|
raise NetStringError, "Separator not found"
|
||||||
|
try:
|
||||||
|
length = int(length)
|
||||||
|
except ValueError:
|
||||||
|
raise NetStringError, "Can not read length"
|
||||||
|
if len(data) != length+1:
|
||||||
|
raise NetStringError, "Data has unexpected length"
|
||||||
|
if data[-1] != ',':
|
||||||
|
raise NetStringError, "End-delimiter not found"
|
||||||
|
return data[:-1]
|
||||||
|
|
||||||
|
def NetStringEncode(s):
|
||||||
|
return str(len(s)) + ":" + s + ","
|
||||||
|
|
||||||
|
|
||||||
|
class Connector (Thread):
|
||||||
|
def __init__(self, config, details):
|
||||||
|
Thread.__init__(self)
|
||||||
|
self.config = config
|
||||||
|
self.host = self.config.get('Global', 'Host')
|
||||||
|
self.port = int(self.config.get('Global', 'Port'))
|
||||||
|
self.klass = self.__class__.__name__
|
||||||
|
self.details = details
|
||||||
|
|
||||||
|
def connect(self):
|
||||||
|
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
self.sock.connect((self.host, self.port))
|
||||||
|
|
||||||
|
|
||||||
|
def query(self, request):
|
||||||
|
nets_request = NetStringEncode(self.klass + ' ' + request)
|
||||||
|
|
||||||
|
print(self.getName() + " REQUEST: " + nets_request)
|
||||||
|
self.sock.sendall(nets_request)
|
||||||
|
|
||||||
|
nets_response = self.sock.recv(8192)
|
||||||
|
print(self.getName() + " NETS_RESPONSE: " + nets_response)
|
||||||
|
response = NetStringDecode(nets_response)
|
||||||
|
print(self.getName() + " RESPONSE: " + response)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self.sock.close()
|
||||||
|
|
||||||
|
|
||||||
|
def execute(self):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
return self.execute()
|
||||||
|
|
||||||
|
|
||||||
|
def threadedExecute(config, klass, numOfThreads, details):
|
||||||
|
threads = []
|
||||||
|
|
||||||
|
while (1):
|
||||||
|
if activeCount() < numOfThreads:
|
||||||
|
t = klass(config, details)
|
||||||
|
t.start()
|
||||||
|
else:
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
|
13
smmapdfw/test/test
Executable file
13
smmapdfw/test/test
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import ConfigParser
|
||||||
|
|
||||||
|
import Connector
|
||||||
|
import verifier
|
||||||
|
import test_worker1
|
||||||
|
|
||||||
|
config = ConfigParser.ConfigParser()
|
||||||
|
config.read("test.ini");
|
||||||
|
|
||||||
|
|
||||||
|
Connector.threadedExecute(config, verifier.verifier, int(config.get('Global', 'Threads')), {})
|
10
smmapdfw/test/test.ini
Normal file
10
smmapdfw/test/test.ini
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Global]
|
||||||
|
Host: ddev1.eng.emea.uu.net
|
||||||
|
Port: 110
|
||||||
|
Threads: 20
|
||||||
|
|
||||||
|
[Verifier]
|
||||||
|
AddressFile: addresses.lst
|
||||||
|
QueriesPerSession: 2
|
||||||
|
|
||||||
|
|
6
smmapdfw/test/test_worker1.py
Normal file
6
smmapdfw/test/test_worker1.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
from Connector import Connector
|
||||||
|
|
||||||
|
class test_worker1 (Connector):
|
||||||
|
def __init__(self, config):
|
||||||
|
Connector.__init__(self, config)
|
||||||
|
|
29
smmapdfw/test/verifier.py
Normal file
29
smmapdfw/test/verifier.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import random
|
||||||
|
from Connector import Connector
|
||||||
|
|
||||||
|
class verifier (Connector):
|
||||||
|
addresses = None
|
||||||
|
|
||||||
|
def __init__(self, config, details):
|
||||||
|
Connector.__init__(self, config, details)
|
||||||
|
self.readAddressFile()
|
||||||
|
random.seed()
|
||||||
|
|
||||||
|
def readAddressFile(self):
|
||||||
|
if (verifier.addresses == None):
|
||||||
|
addressFile = self.config.get('Verifier', 'AddressFile')
|
||||||
|
f = open(addressFile)
|
||||||
|
l = f.readlines()
|
||||||
|
f.close()
|
||||||
|
verifier.addresses = map(lambda x: x[:-1].rstrip(), l)
|
||||||
|
|
||||||
|
|
||||||
|
def execute(self):
|
||||||
|
queriesPerSession = int(self.config.get('Verifier', 'QueriesPerSession'))
|
||||||
|
self.connect()
|
||||||
|
for i in range(queriesPerSession):
|
||||||
|
a = verifier.addresses[int(random.random()*len(verifier.addresses))]
|
||||||
|
self.query(a)
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user