bitbake: bitbake-hashclient: Add commands to get hashes

Adds subcommands to query the server for equivalent hashes and for
output hashes.

(Bitbake rev: 36ba202232399738670c9fb11169ead5590a3e82)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Watt
2023-11-30 10:03:43 -07:00
committed by Richard Purdie
parent 5b18ff6d6b
commit 6b6374c336
2 changed files with 47 additions and 0 deletions

View File

@@ -52,6 +52,22 @@ def print_user(u):
def main():
def handle_get(args, client):
result = client.get_taskhash(args.method, args.taskhash, all_properties=True)
if not result:
return 0
print(json.dumps(result, sort_keys=True, indent=4))
return 0
def handle_get_outhash(args, client):
result = client.get_outhash(args.method, args.outhash, args.taskhash)
if not result:
return 0
print(json.dumps(result, sort_keys=True, indent=4))
return 0
def handle_stats(args, client):
if args.reset:
s = client.reset_stats()
@@ -189,6 +205,17 @@ def main():
subparsers = parser.add_subparsers()
get_parser = subparsers.add_parser('get', help="Get the unihash for a taskhash")
get_parser.add_argument("method", help="Method to query")
get_parser.add_argument("taskhash", help="Task hash to query")
get_parser.set_defaults(func=handle_get)
get_outhash_parser = subparsers.add_parser('get-outhash', help="Get output hash information")
get_outhash_parser.add_argument("method", help="Method to query")
get_outhash_parser.add_argument("outhash", help="Output hash to query")
get_outhash_parser.add_argument("taskhash", help="Task hash to query")
get_outhash_parser.set_defaults(func=handle_get_outhash)
stats_parser = subparsers.add_parser('stats', help='Show server stats')
stats_parser.add_argument('--reset', action='store_true',
help='Reset server stats')

View File

@@ -842,6 +842,26 @@ class TestHashEquivalenceClient(HashEquivalenceTestSetup, unittest.TestCase):
def get_server_addr(self, server_idx):
return "unix://" + os.path.join(self.temp_dir.name, 'sock%d' % server_idx)
def test_get(self):
taskhash, outhash, unihash = self.create_test_hash(self.client)
p = self.run_hashclient(["--address", self.server_address, "get", self.METHOD, taskhash])
data = json.loads(p.stdout)
self.assertEqual(data["unihash"], unihash)
self.assertEqual(data["outhash"], outhash)
self.assertEqual(data["taskhash"], taskhash)
self.assertEqual(data["method"], self.METHOD)
def test_get_outhash(self):
taskhash, outhash, unihash = self.create_test_hash(self.client)
p = self.run_hashclient(["--address", self.server_address, "get-outhash", self.METHOD, outhash, taskhash])
data = json.loads(p.stdout)
self.assertEqual(data["unihash"], unihash)
self.assertEqual(data["outhash"], outhash)
self.assertEqual(data["taskhash"], taskhash)
self.assertEqual(data["method"], self.METHOD)
def test_stats(self):
p = self.run_hashclient(["--address", self.server_address, "stats"], check=True)
json.loads(p.stdout)