#!/usr/bin/env python3 import time import json from hashlib import sha256 from functools import partial import trio import requests from skynet.constants import DEFAULT_IPFS_REMOTE from skynet.dgpu import open_dgpu_node from leap.sugar import collect_stdout def test_enqueue_work(cleos): user = 'telegram' req = json.dumps({ 'method': 'diffuse', 'params': { 'algo': 'midj', 'prompt': 'skynet terminator dystopic', 'width': 512, 'height': 512, 'guidance': 10, 'step': 28, 'seed': 420, 'upscaler': 'x4' } }) binary = '' ec, out = cleos.push_action( 'telos.gpu', 'enqueue', [user, req, binary, '20.0000 GPU', 1], f'{user}@active' ) assert ec == 0 queue = cleos.get_table('telos.gpu', 'telos.gpu', 'queue') assert len(queue) == 1 req_on_chain = queue[0] assert req_on_chain['user'] == user assert req_on_chain['body'] == req assert req_on_chain['binary_data'] == binary trio.run( partial( open_dgpu_node, f'testworker1', 'active', cleos, DEFAULT_IPFS_REMOTE, cleos.private_keys['testworker1'], initial_algos=['midj'] ) ) queue = cleos.get_table('telos.gpu', 'telos.gpu', 'queue') assert len(queue) == 0 def test_enqueue_dequeue(cleos): user = 'telegram' req = json.dumps({ 'method': 'diffuse', 'params': { 'algo': 'midj', 'prompt': 'skynet terminator dystopic', 'width': 512, 'height': 512, 'guidance': 10, 'step': 28, 'seed': 420, 'upscaler': 'x4' } }) binary = '' ec, out = cleos.push_action( 'telos.gpu', 'enqueue', [user, req, binary, '20.0000 GPU', 1], f'{user}@active' ) assert ec == 0 request_id, _ = collect_stdout(out).split(':') request_id = int(request_id) queue = cleos.get_table('telos.gpu', 'telos.gpu', 'queue') assert len(queue) == 1 ec, out = cleos.push_action( 'telos.gpu', 'dequeue', [user, request_id], f'{user}@active' ) assert ec == 0 queue = cleos.get_table('telos.gpu', 'telos.gpu', 'queue') assert len(queue) == 0