summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/hashserv/tests.py
diff options
context:
space:
mode:
authorJoshua Watt <JPEWhacker@gmail.com>2024-05-29 16:47:34 -0600
committerSteve Sakoman <steve@sakoman.com>2024-06-06 06:53:49 -0700
commit934c533196bbe8d3ae51499f1326f26d94a7095f (patch)
tree73360854eadaffdd9832dbcfe6579a9597562b34 /bitbake/lib/hashserv/tests.py
parentd1811356b766280553dd84220d3216387f3a0a51 (diff)
downloadpoky-934c533196bbe8d3ae51499f1326f26d94a7095f.tar.gz
bitbake: hashserv: client: Add batch stream API
Changes the stream mode to do "batch" processing. This means that the sending and reciving of messages is done simultaneously so that messages can be sent as fast as possible without having to wait for each reply. This allows multiple messages to be in flight at once, reducing the effect of the round trip latency from the server. (Bitbake rev: f99a17023b972d0d90dccb111f983655af6ccb87) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Steve Sakoman <steve@sakoman.com>
Diffstat (limited to 'bitbake/lib/hashserv/tests.py')
-rw-r--r--bitbake/lib/hashserv/tests.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/bitbake/lib/hashserv/tests.py b/bitbake/lib/hashserv/tests.py
index 0809453cf8..5349cd5867 100644
--- a/bitbake/lib/hashserv/tests.py
+++ b/bitbake/lib/hashserv/tests.py
@@ -594,6 +594,43 @@ class HashEquivalenceCommonTests(object):
594 7: None, 594 7: None,
595 }) 595 })
596 596
597 def test_get_unihash_batch(self):
598 TEST_INPUT = (
599 # taskhash outhash unihash
600 ('8aa96fcffb5831b3c2c0cb75f0431e3f8b20554a', 'afe240a439959ce86f5e322f8c208e1fedefea9e813f2140c81af866cc9edf7e','218e57509998197d570e2c98512d0105985dffc9'),
601 # Duplicated taskhash with multiple output hashes and unihashes.
602 ('8aa96fcffb5831b3c2c0cb75f0431e3f8b20554a', '0904a7fe3dc712d9fd8a74a616ddca2a825a8ee97adf0bd3fc86082c7639914d', 'ae9a7d252735f0dafcdb10e2e02561ca3a47314c'),
603 # Equivalent hash
604 ("044c2ec8aaf480685a00ff6ff49e6162e6ad34e1", '0904a7fe3dc712d9fd8a74a616ddca2a825a8ee97adf0bd3fc86082c7639914d', "def64766090d28f627e816454ed46894bb3aab36"),
605 ("e3da00593d6a7fb435c7e2114976c59c5fd6d561", "1cf8713e645f491eb9c959d20b5cae1c47133a292626dda9b10709857cbe688a", "3b5d3d83f07f259e9086fcb422c855286e18a57d"),
606 ('35788efcb8dfb0a02659d81cf2bfd695fb30faf9', '2765d4a5884be49b28601445c2760c5f21e7e5c0ee2b7e3fce98fd7e5970796f', 'f46d3fbb439bd9b921095da657a4de906510d2cd'),
607 ('35788efcb8dfb0a02659d81cf2bfd695fb30fafa', '2765d4a5884be49b28601445c2760c5f21e7e5c0ee2b7e3fce98fd7e5970796f', 'f46d3fbb439bd9b921095da657a4de906510d2ce'),
608 ('9d81d76242cc7cfaf7bf74b94b9cd2e29324ed74', '8470d56547eea6236d7c81a644ce74670ca0bbda998e13c629ef6bb3f0d60b69', '05d2a63c81e32f0a36542ca677e8ad852365c538'),
609 )
610 EXTRA_QUERIES = (
611 "6b6be7a84ab179b4240c4302518dc3f6",
612 )
613
614 for taskhash, outhash, unihash in TEST_INPUT:
615 self.client.report_unihash(taskhash, self.METHOD, outhash, unihash)
616
617
618 result = self.client.get_unihash_batch(
619 [(self.METHOD, data[0]) for data in TEST_INPUT] +
620 [(self.METHOD, e) for e in EXTRA_QUERIES]
621 )
622
623 self.assertListEqual(result, [
624 "218e57509998197d570e2c98512d0105985dffc9",
625 "218e57509998197d570e2c98512d0105985dffc9",
626 "218e57509998197d570e2c98512d0105985dffc9",
627 "3b5d3d83f07f259e9086fcb422c855286e18a57d",
628 "f46d3fbb439bd9b921095da657a4de906510d2cd",
629 "f46d3fbb439bd9b921095da657a4de906510d2cd",
630 "05d2a63c81e32f0a36542ca677e8ad852365c538",
631 None,
632 ])
633
597 def test_client_pool_unihash_exists(self): 634 def test_client_pool_unihash_exists(self):
598 TEST_INPUT = ( 635 TEST_INPUT = (
599 # taskhash outhash unihash 636 # taskhash outhash unihash
@@ -636,6 +673,44 @@ class HashEquivalenceCommonTests(object):
636 result = client_pool.unihashes_exist(query) 673 result = client_pool.unihashes_exist(query)
637 self.assertDictEqual(result, expected) 674 self.assertDictEqual(result, expected)
638 675
676 def test_unihash_exists_batch(self):
677 TEST_INPUT = (
678 # taskhash outhash unihash
679 ('8aa96fcffb5831b3c2c0cb75f0431e3f8b20554a', 'afe240a439959ce86f5e322f8c208e1fedefea9e813f2140c81af866cc9edf7e','218e57509998197d570e2c98512d0105985dffc9'),
680 # Duplicated taskhash with multiple output hashes and unihashes.
681 ('8aa96fcffb5831b3c2c0cb75f0431e3f8b20554a', '0904a7fe3dc712d9fd8a74a616ddca2a825a8ee97adf0bd3fc86082c7639914d', 'ae9a7d252735f0dafcdb10e2e02561ca3a47314c'),
682 # Equivalent hash
683 ("044c2ec8aaf480685a00ff6ff49e6162e6ad34e1", '0904a7fe3dc712d9fd8a74a616ddca2a825a8ee97adf0bd3fc86082c7639914d', "def64766090d28f627e816454ed46894bb3aab36"),
684 ("e3da00593d6a7fb435c7e2114976c59c5fd6d561", "1cf8713e645f491eb9c959d20b5cae1c47133a292626dda9b10709857cbe688a", "3b5d3d83f07f259e9086fcb422c855286e18a57d"),
685 ('35788efcb8dfb0a02659d81cf2bfd695fb30faf9', '2765d4a5884be49b28601445c2760c5f21e7e5c0ee2b7e3fce98fd7e5970796f', 'f46d3fbb439bd9b921095da657a4de906510d2cd'),
686 ('35788efcb8dfb0a02659d81cf2bfd695fb30fafa', '2765d4a5884be49b28601445c2760c5f21e7e5c0ee2b7e3fce98fd7e5970796f', 'f46d3fbb439bd9b921095da657a4de906510d2ce'),
687 ('9d81d76242cc7cfaf7bf74b94b9cd2e29324ed74', '8470d56547eea6236d7c81a644ce74670ca0bbda998e13c629ef6bb3f0d60b69', '05d2a63c81e32f0a36542ca677e8ad852365c538'),
688 )
689 EXTRA_QUERIES = (
690 "6b6be7a84ab179b4240c4302518dc3f6",
691 )
692
693 result_unihashes = set()
694
695
696 for taskhash, outhash, unihash in TEST_INPUT:
697 result = self.client.report_unihash(taskhash, self.METHOD, outhash, unihash)
698 result_unihashes.add(result["unihash"])
699
700 query = []
701 expected = []
702
703 for _, _, unihash in TEST_INPUT:
704 query.append(unihash)
705 expected.append(unihash in result_unihashes)
706
707
708 for unihash in EXTRA_QUERIES:
709 query.append(unihash)
710 expected.append(False)
711
712 result = self.client.unihash_exists_batch(query)
713 self.assertListEqual(result, expected)
639 714
640 def test_auth_read_perms(self): 715 def test_auth_read_perms(self):
641 admin_client = self.start_auth_server() 716 admin_client = self.start_auth_server()