libstore/machines: move legacy parser to own namespace
Change-Id: I4ecf1e56e713cd32b6a443f9d195c1beb0cb2f7f
This commit is contained in:
@@ -66,6 +66,8 @@ try {
|
||||
co_return result::current_exception();
|
||||
}
|
||||
|
||||
namespace machines_legacy_parsing {
|
||||
|
||||
static std::vector<std::string> expandBuilderLines(const std::string & builders)
|
||||
{
|
||||
std::vector<std::string> result;
|
||||
@@ -179,10 +181,12 @@ static Machines parseBuilderLines(const std::vector<std::string> & builders)
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Machines getMachines()
|
||||
{
|
||||
const auto builderLines = expandBuilderLines(settings.builders);
|
||||
return parseBuilderLines(builderLines);
|
||||
const auto builderLines = machines_legacy_parsing::expandBuilderLines(settings.builders);
|
||||
return machines_legacy_parsing::parseBuilderLines(builderLines);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,28 +15,33 @@ using testing::SizeIs;
|
||||
|
||||
using nix::absPath;
|
||||
using nix::FormatError;
|
||||
using nix::UsageError;
|
||||
using nix::getMachines;
|
||||
using nix::Machine;
|
||||
using nix::Machines;
|
||||
using nix::pathExists;
|
||||
using nix::settings;
|
||||
using nix::UsageError;
|
||||
|
||||
class Environment : public ::testing::Environment {
|
||||
public:
|
||||
void SetUp() override { settings.thisSystem.override("TEST_ARCH-TEST_OS"); }
|
||||
class Environment : public ::testing::Environment
|
||||
{
|
||||
public:
|
||||
void SetUp() override
|
||||
{
|
||||
settings.thisSystem.override("TEST_ARCH-TEST_OS");
|
||||
}
|
||||
};
|
||||
|
||||
testing::Environment* const foo_env =
|
||||
testing::AddGlobalTestEnvironment(new Environment);
|
||||
testing::Environment * const foo_env = testing::AddGlobalTestEnvironment(new Environment);
|
||||
|
||||
TEST(machines, getMachinesWithEmptyBuilders) {
|
||||
TEST(machines, getMachinesWithEmptyBuilders)
|
||||
{
|
||||
settings.builders.override("");
|
||||
Machines actual = getMachines();
|
||||
ASSERT_THAT(actual, SizeIs(0));
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesUriOnly) {
|
||||
TEST(machines, getMachinesUriOnly)
|
||||
{
|
||||
settings.builders.override("nix@scratchy.labs.cs.uu.nl");
|
||||
Machines actual = getMachines();
|
||||
ASSERT_THAT(actual, SizeIs(1));
|
||||
@@ -50,7 +55,8 @@ TEST(machines, getMachinesUriOnly) {
|
||||
EXPECT_THAT(actual[0], Field(&Machine::sshPublicHostKey, SizeIs(0)));
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesDefaults) {
|
||||
TEST(machines, getMachinesDefaults)
|
||||
{
|
||||
settings.builders.override("nix@scratchy.labs.cs.uu.nl - - - - - - -");
|
||||
Machines actual = getMachines();
|
||||
ASSERT_THAT(actual, SizeIs(1));
|
||||
@@ -64,26 +70,35 @@ TEST(machines, getMachinesDefaults) {
|
||||
EXPECT_THAT(actual[0], Field(&Machine::sshPublicHostKey, SizeIs(0)));
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesWithNewLineSeparator) {
|
||||
TEST(machines, getMachinesWithNewLineSeparator)
|
||||
{
|
||||
settings.builders.override("nix@scratchy.labs.cs.uu.nl\nnix@itchy.labs.cs.uu.nl");
|
||||
Machines actual = getMachines();
|
||||
ASSERT_THAT(actual, SizeIs(2));
|
||||
EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, EndsWith("nix@scratchy.labs.cs.uu.nl"))));
|
||||
EXPECT_THAT(
|
||||
actual, Contains(Field(&Machine::storeUri, EndsWith("nix@scratchy.labs.cs.uu.nl")))
|
||||
);
|
||||
EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, EndsWith("nix@itchy.labs.cs.uu.nl"))));
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesWithSemicolonSeparator) {
|
||||
TEST(machines, getMachinesWithSemicolonSeparator)
|
||||
{
|
||||
settings.builders.override("nix@scratchy.labs.cs.uu.nl ; nix@itchy.labs.cs.uu.nl");
|
||||
Machines actual = getMachines();
|
||||
EXPECT_THAT(actual, SizeIs(2));
|
||||
EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, EndsWith("nix@scratchy.labs.cs.uu.nl"))));
|
||||
EXPECT_THAT(
|
||||
actual, Contains(Field(&Machine::storeUri, EndsWith("nix@scratchy.labs.cs.uu.nl")))
|
||||
);
|
||||
EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, EndsWith("nix@itchy.labs.cs.uu.nl"))));
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesWithCorrectCompleteSingleBuilder) {
|
||||
settings.builders.override("nix@scratchy.labs.cs.uu.nl i686-linux "
|
||||
"/home/nix/.ssh/id_scratchy_auto 8 3 kvm "
|
||||
"benchmark SSH+HOST+PUBLIC+KEY+BASE64+ENCODED==");
|
||||
TEST(machines, getMachinesWithCorrectCompleteSingleBuilder)
|
||||
{
|
||||
settings.builders.override(
|
||||
"nix@scratchy.labs.cs.uu.nl i686-linux "
|
||||
"/home/nix/.ssh/id_scratchy_auto 8 3 kvm "
|
||||
"benchmark SSH+HOST+PUBLIC+KEY+BASE64+ENCODED=="
|
||||
);
|
||||
Machines actual = getMachines();
|
||||
ASSERT_THAT(actual, SizeIs(1));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::storeUri, EndsWith("nix@scratchy.labs.cs.uu.nl")));
|
||||
@@ -93,15 +108,18 @@ TEST(machines, getMachinesWithCorrectCompleteSingleBuilder) {
|
||||
EXPECT_THAT(actual[0], Field(&Machine::speedFactor, Eq(3)));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::supportedFeatures, ElementsAre("kvm")));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::mandatoryFeatures, ElementsAre("benchmark")));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::sshPublicHostKey, Eq("SSH+HOST+PUBLIC+KEY+BASE64+ENCODED==")));
|
||||
EXPECT_THAT(
|
||||
actual[0], Field(&Machine::sshPublicHostKey, Eq("SSH+HOST+PUBLIC+KEY+BASE64+ENCODED=="))
|
||||
);
|
||||
}
|
||||
|
||||
TEST(machines,
|
||||
getMachinesWithCorrectCompleteSingleBuilderWithTabColumnDelimiter) {
|
||||
TEST(machines, getMachinesWithCorrectCompleteSingleBuilderWithTabColumnDelimiter)
|
||||
{
|
||||
settings.builders.override(
|
||||
"nix@scratchy.labs.cs.uu.nl\ti686-linux\t/home/nix/.ssh/"
|
||||
"id_scratchy_auto\t8\t3\tkvm\tbenchmark\tSSH+HOST+PUBLIC+"
|
||||
"KEY+BASE64+ENCODED==");
|
||||
"KEY+BASE64+ENCODED=="
|
||||
);
|
||||
Machines actual = getMachines();
|
||||
ASSERT_THAT(actual, SizeIs(1));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::storeUri, EndsWith("nix@scratchy.labs.cs.uu.nl")));
|
||||
@@ -111,22 +129,34 @@ TEST(machines,
|
||||
EXPECT_THAT(actual[0], Field(&Machine::speedFactor, Eq(3)));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::supportedFeatures, ElementsAre("kvm")));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::mandatoryFeatures, ElementsAre("benchmark")));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::sshPublicHostKey, Eq("SSH+HOST+PUBLIC+KEY+BASE64+ENCODED==")));
|
||||
EXPECT_THAT(
|
||||
actual[0], Field(&Machine::sshPublicHostKey, Eq("SSH+HOST+PUBLIC+KEY+BASE64+ENCODED=="))
|
||||
);
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesWithMultiOptions) {
|
||||
settings.builders.override("nix@scratchy.labs.cs.uu.nl Arch1,Arch2 - - - "
|
||||
"SupportedFeature1,SupportedFeature2 "
|
||||
"MandatoryFeature1,MandatoryFeature2");
|
||||
TEST(machines, getMachinesWithMultiOptions)
|
||||
{
|
||||
settings.builders.override(
|
||||
"nix@scratchy.labs.cs.uu.nl Arch1,Arch2 - - - "
|
||||
"SupportedFeature1,SupportedFeature2 "
|
||||
"MandatoryFeature1,MandatoryFeature2"
|
||||
);
|
||||
Machines actual = getMachines();
|
||||
ASSERT_THAT(actual, SizeIs(1));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::storeUri, EndsWith("nix@scratchy.labs.cs.uu.nl")));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::systemTypes, ElementsAre("Arch1", "Arch2")));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::supportedFeatures, ElementsAre("SupportedFeature1", "SupportedFeature2")));
|
||||
EXPECT_THAT(actual[0], Field(&Machine::mandatoryFeatures, ElementsAre("MandatoryFeature1", "MandatoryFeature2")));
|
||||
EXPECT_THAT(
|
||||
actual[0],
|
||||
Field(&Machine::supportedFeatures, ElementsAre("SupportedFeature1", "SupportedFeature2"))
|
||||
);
|
||||
EXPECT_THAT(
|
||||
actual[0],
|
||||
Field(&Machine::mandatoryFeatures, ElementsAre("MandatoryFeature1", "MandatoryFeature2"))
|
||||
);
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesWithIncorrectFormat) {
|
||||
TEST(machines, getMachinesWithIncorrectFormat)
|
||||
{
|
||||
settings.builders.override("nix@scratchy.labs.cs.uu.nl - - eight");
|
||||
EXPECT_THROW(getMachines(), FormatError);
|
||||
settings.builders.override("nix@scratchy.labs.cs.uu.nl - - -1");
|
||||
@@ -139,19 +169,23 @@ TEST(machines, getMachinesWithIncorrectFormat) {
|
||||
EXPECT_THROW(getMachines(), FormatError);
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesWithCorrectFileReference) {
|
||||
TEST(machines, getMachinesWithCorrectFileReference)
|
||||
{
|
||||
auto path = nix::getUnitTestDataPath("machines.valid");
|
||||
ASSERT_TRUE(pathExists(path));
|
||||
|
||||
settings.builders.override(std::string("@") + path);
|
||||
Machines actual = getMachines();
|
||||
ASSERT_THAT(actual, SizeIs(3));
|
||||
EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, EndsWith("nix@scratchy.labs.cs.uu.nl"))));
|
||||
EXPECT_THAT(
|
||||
actual, Contains(Field(&Machine::storeUri, EndsWith("nix@scratchy.labs.cs.uu.nl")))
|
||||
);
|
||||
EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, EndsWith("nix@itchy.labs.cs.uu.nl"))));
|
||||
EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, EndsWith("nix@poochie.labs.cs.uu.nl"))));
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesWithCorrectFileReferenceToEmptyFile) {
|
||||
TEST(machines, getMachinesWithCorrectFileReferenceToEmptyFile)
|
||||
{
|
||||
auto path = "/dev/null";
|
||||
ASSERT_TRUE(pathExists(path));
|
||||
|
||||
@@ -160,13 +194,15 @@ TEST(machines, getMachinesWithCorrectFileReferenceToEmptyFile) {
|
||||
ASSERT_THAT(actual, SizeIs(0));
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesWithIncorrectFileReference) {
|
||||
TEST(machines, getMachinesWithIncorrectFileReference)
|
||||
{
|
||||
settings.builders.override(std::string("@") + absPath("/not/a/file"));
|
||||
Machines actual = getMachines();
|
||||
ASSERT_THAT(actual, SizeIs(0));
|
||||
}
|
||||
|
||||
TEST(machines, getMachinesWithCorrectFileReferenceToIncorrectFile) {
|
||||
TEST(machines, getMachinesWithCorrectFileReferenceToIncorrectFile)
|
||||
{
|
||||
settings.builders.override(std::string("@") + nix::getUnitTestDataPath("machines.bad_format"));
|
||||
EXPECT_THROW(getMachines(), FormatError);
|
||||
}
|
||||
@@ -140,7 +140,7 @@ libstore_tests_sources = files(
|
||||
'libstore/derivation.cc',
|
||||
'libstore/derived-path.cc',
|
||||
'libstore/filetransfer.cc',
|
||||
'libstore/machines.cc',
|
||||
'libstore/machines_legacy.cc',
|
||||
'libstore/nar-info-disk-cache.cc',
|
||||
'libstore/outputs-spec.cc',
|
||||
'libstore/path.cc',
|
||||
|
||||
Reference in New Issue
Block a user