summaryrefslogtreecommitdiff
path: root/test/libapt/srvrecs_test.cc
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2015-08-20 10:40:45 +0200
committerMichael Vogt <mvo@debian.org>2015-08-20 11:41:51 +0200
commitc29dbdffcb6f67812f823f1f844b87320cf6b437 (patch)
tree41a98cd8af9886a4cf68b68a4034d635b94737b2 /test/libapt/srvrecs_test.cc
parent9b70edba6796ebff3935af1cfb5c9bbc98d020b4 (diff)
Add basic (non weight adjusted) shuffling for SrvRecords selection
Also add "Debug::Acquire::SrvRecs" debug option and the option "Acquire::EnableSrvRecods" to allow disabling this lookup.
Diffstat (limited to 'test/libapt/srvrecs_test.cc')
-rw-r--r--test/libapt/srvrecs_test.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/libapt/srvrecs_test.cc b/test/libapt/srvrecs_test.cc
new file mode 100644
index 000000000..7e43cc757
--- /dev/null
+++ b/test/libapt/srvrecs_test.cc
@@ -0,0 +1,33 @@
+#include <config.h>
+
+#include <apt-pkg/srvrec.h>
+
+#include <string>
+#include <iostream>
+
+#include <gtest/gtest.h>
+
+TEST(SrvRecTest, PopFromSrvRecs)
+{
+ // the PopFromSrvRecs() is using a random number so we must
+ // run it a bunch of times to ensure we are not fooled by randomness
+ std::set<std::string> selected;
+ for(int i=0;i<100;i++)
+ {
+ std::vector<SrvRec> Meep;
+ SrvRec foo = {target:"foo", priority: 20, weight: 0, port: 80};
+ Meep.push_back(foo);
+
+ SrvRec bar = {target:"bar", priority: 20, weight: 0, port: 80};
+ Meep.push_back(bar);
+
+ EXPECT_EQ(Meep.size(), 2);
+ SrvRec result = PopFromSrvRecs(Meep);
+ selected.insert(result.target);
+ // ensure that pop removed one element
+ EXPECT_EQ(Meep.size(), 1);
+ }
+
+ // ensure that after enough runs we end up with both selected
+ EXPECT_EQ(selected.size(), 2);
+}