Sync test: submit fake shares to test stratum

pull/271/head
SChernykh 2023-08-14 16:10:44 +02:00
parent 229d7b052a
commit 929f908a86
2 changed files with 57 additions and 13 deletions

View File

@ -973,14 +973,14 @@ void StratumServer::on_after_share_found(uv_work_t* req, int /*status*/)
BACKGROUND_JOB_STOP(StratumServer::on_share_found); BACKGROUND_JOB_STOP(StratumServer::on_share_found);
} }
ON_SCOPE_LEAVE([share]() StratumServer* server = share->m_server;
ON_SCOPE_LEAVE([share, server]()
{ {
ASAN_POISON_MEMORY_REGION(share, sizeof(SubmittedShare)); ASAN_POISON_MEMORY_REGION(share, sizeof(SubmittedShare));
share->m_server->m_submittedSharesPool.push_back(share); server->m_submittedSharesPool.push_back(share);
}); });
StratumServer* server = share->m_server;
const bool bad_share = (share->m_result == SubmittedShare::Result::LOW_DIFF) || (share->m_result == SubmittedShare::Result::INVALID_POW); const bool bad_share = (share->m_result == SubmittedShare::Result::LOW_DIFF) || (share->m_result == SubmittedShare::Result::INVALID_POW);
if ((client->m_resetCounter.load() == share->m_clientResetCounter) && (client->m_rpcId == share->m_rpcId)) { if ((client->m_resetCounter.load() == share->m_clientResetCounter) && (client->m_rpcId == share->m_rpcId)) {

View File

@ -1,37 +1,81 @@
import socket import socket
import time import time
import sys import sys
import json
f = open('stratum_dummy' + sys.argv[1] + '.log', 'wb'); f = open('stratum_dummy' + sys.argv[1] + '.log', 'wb')
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1) sock.settimeout(1)
sock.setblocking(True) sock.setblocking(True)
f.write(b'Connecting')
time.sleep(5) time.sleep(5)
while sock.connect_ex(('127.0.0.1', 3333)) != 0: while sock.connect_ex(('127.0.0.1', 3333)) != 0:
f.write(b'.\n') f.write(b'.')
print('.') print('.')
time.sleep(1) time.sleep(1)
diff = ''; f.write(b'\n')
diff = ''
if (sys.argv[1] == '2'): if (sys.argv[1] == '2'):
diff = '+1000'; diff = '+1000'
if (sys.argv[1] == '3'): if (sys.argv[1] == '3'):
diff = '+10000000'; diff = '+10000000'
request = '{"id":1,"method":"login","params":{"login":"x' + diff + '"}}\n' msg_id = 1
request = '{"id":' + str(msg_id) + ',"method":"login","params":{"login":"x' + diff + '"}}\n'
msg_id += 1
s = '-> ' + request
print(s, end='')
sock.sendall(request.encode('utf-8')) sock.sendall(request.encode('utf-8'))
f.write(s.encode('utf-8'))
f.flush()
rpc_id = ''
while True: while True:
data = sock.recv(1024) data = sock.recv(1024)
if len(data) == 0: if len(data) == 0:
break; break
f.write(data)
s = '<- ' + data.decode('utf-8')
print(s, end='')
f.write(s.encode('utf-8'))
f.flush() f.flush()
print(data.decode('utf-8'))
obj = json.loads(data)
job_id = ''
if ('method' in obj) and ('params' in obj) and (obj['method'] == 'job'):
job_id = obj['params']['job_id']
target = obj['params']['target']
elif ('result' in obj):
if ('id' in obj['result']):
rpc_id = obj['result']['id']
job_id = obj['result']['job']['job_id']
target = obj['result']['job']['target']
if (job_id != ''):
if (msg_id < 4):
result = ('f' if (msg_id == 2) else '0') * 64
request = '{"id":' + str(msg_id) + ',"method":"submit","params":{"id":"' + rpc_id + '","job_id":"' + job_id + '","nonce":"ffffffff","result":"' + result + '"}}\n'
else:
request = '{"id":' + str(msg_id) + ',"method":"keepalived"}\n'
msg_id += 1
s = '-> ' + request
print(s, end='')
sock.sendall(request.encode('utf-8'))
f.write(s.encode('utf-8'))
f.flush()
sock.close() sock.close()
f.close() f.close()