mirror of
https://github.com/NixOS/nix
synced 2025-07-09 16:13:54 +02:00
Refactor unix domain socket store config (#11109)
Following what is outlined in #10766 refactor the uds-remote-store such that the member variables (state) don't live in the store itself but in the config object. Additionally, the config object includes a new necessary constructor that takes a scheme & authority. Tests are commented out because of linking errors with the current config system. When there is a new config system we can reenable them. Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems>
This commit is contained in:
parent
17051ca80a
commit
57399bfc0e
26 changed files with 571 additions and 215 deletions
21
tests/unit/libstore/http-binary-cache-store.cc
Normal file
21
tests/unit/libstore/http-binary-cache-store.cc
Normal file
|
@ -0,0 +1,21 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "http-binary-cache-store.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
TEST(HttpBinaryCacheStore, constructConfig)
|
||||
{
|
||||
HttpBinaryCacheStoreConfig config{"http", "foo.bar.baz", {}};
|
||||
|
||||
EXPECT_EQ(config.cacheUri, "http://foo.bar.baz");
|
||||
}
|
||||
|
||||
TEST(HttpBinaryCacheStore, constructConfigNoTrailingSlash)
|
||||
{
|
||||
HttpBinaryCacheStoreConfig config{"https", "foo.bar.baz/a/b/", {}};
|
||||
|
||||
EXPECT_EQ(config.cacheUri, "https://foo.bar.baz/a/b");
|
||||
}
|
||||
|
||||
} // namespace nix
|
14
tests/unit/libstore/local-binary-cache-store.cc
Normal file
14
tests/unit/libstore/local-binary-cache-store.cc
Normal file
|
@ -0,0 +1,14 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "local-binary-cache-store.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
TEST(LocalBinaryCacheStore, constructConfig)
|
||||
{
|
||||
LocalBinaryCacheStoreConfig config{"local", "/foo/bar/baz", {}};
|
||||
|
||||
EXPECT_EQ(config.binaryCacheDir, "/foo/bar/baz");
|
||||
}
|
||||
|
||||
} // namespace nix
|
34
tests/unit/libstore/local-overlay-store.cc
Normal file
34
tests/unit/libstore/local-overlay-store.cc
Normal file
|
@ -0,0 +1,34 @@
|
|||
// FIXME: Odd failures for templates that are causing the PR to break
|
||||
// for now with discussion with @Ericson2314 to comment out.
|
||||
#if 0
|
||||
# include <gtest/gtest.h>
|
||||
|
||||
# include "local-overlay-store.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
TEST(LocalOverlayStore, constructConfig_rootQueryParam)
|
||||
{
|
||||
LocalOverlayStoreConfig config{
|
||||
"local-overlay",
|
||||
"",
|
||||
{
|
||||
{
|
||||
"root",
|
||||
"/foo/bar",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
EXPECT_EQ(config.rootDir.get(), std::optional{"/foo/bar"});
|
||||
}
|
||||
|
||||
TEST(LocalOverlayStore, constructConfig_rootPath)
|
||||
{
|
||||
LocalOverlayStoreConfig config{"local-overlay", "/foo/bar", {}};
|
||||
|
||||
EXPECT_EQ(config.rootDir.get(), std::optional{"/foo/bar"});
|
||||
}
|
||||
|
||||
} // namespace nix
|
||||
#endif
|
40
tests/unit/libstore/local-store.cc
Normal file
40
tests/unit/libstore/local-store.cc
Normal file
|
@ -0,0 +1,40 @@
|
|||
// FIXME: Odd failures for templates that are causing the PR to break
|
||||
// for now with discussion with @Ericson2314 to comment out.
|
||||
#if 0
|
||||
# include <gtest/gtest.h>
|
||||
|
||||
# include "local-store.hh"
|
||||
|
||||
// Needed for template specialisations. This is not good! When we
|
||||
// overhaul how store configs work, this should be fixed.
|
||||
# include "args.hh"
|
||||
# include "config-impl.hh"
|
||||
# include "abstract-setting-to-json.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
TEST(LocalStore, constructConfig_rootQueryParam)
|
||||
{
|
||||
LocalStoreConfig config{
|
||||
"local",
|
||||
"",
|
||||
{
|
||||
{
|
||||
"root",
|
||||
"/foo/bar",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
EXPECT_EQ(config.rootDir.get(), std::optional{"/foo/bar"});
|
||||
}
|
||||
|
||||
TEST(LocalStore, constructConfig_rootPath)
|
||||
{
|
||||
LocalStoreConfig config{"local", "/foo/bar", {}};
|
||||
|
||||
EXPECT_EQ(config.rootDir.get(), std::optional{"/foo/bar"});
|
||||
}
|
||||
|
||||
} // namespace nix
|
||||
#endif
|
|
@ -58,7 +58,11 @@ sources = files(
|
|||
'derivation.cc',
|
||||
'derived-path.cc',
|
||||
'downstream-placeholder.cc',
|
||||
'http-binary-cache-store.cc',
|
||||
'legacy-ssh-store.cc',
|
||||
'local-binary-cache-store.cc',
|
||||
'local-overlay-store.cc',
|
||||
'local-store.cc',
|
||||
'machines.cc',
|
||||
'nar-info-disk-cache.cc',
|
||||
'nar-info.cc',
|
||||
|
@ -67,9 +71,11 @@ sources = files(
|
|||
'path-info.cc',
|
||||
'path.cc',
|
||||
'references.cc',
|
||||
's3-binary-cache-store.cc',
|
||||
'serve-protocol.cc',
|
||||
'ssh-store.cc',
|
||||
'store-reference.cc',
|
||||
'uds-remote-store.cc',
|
||||
'worker-protocol.cc',
|
||||
)
|
||||
|
||||
|
|
18
tests/unit/libstore/s3-binary-cache-store.cc
Normal file
18
tests/unit/libstore/s3-binary-cache-store.cc
Normal file
|
@ -0,0 +1,18 @@
|
|||
#if ENABLE_S3
|
||||
|
||||
# include <gtest/gtest.h>
|
||||
|
||||
# include "s3-binary-cache-store.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
TEST(S3BinaryCacheStore, constructConfig)
|
||||
{
|
||||
S3BinaryCacheStoreConfig config{"s3", "foobar", {}};
|
||||
|
||||
EXPECT_EQ(config.bucketName, "foobar");
|
||||
}
|
||||
|
||||
} // namespace nix
|
||||
|
||||
#endif
|
|
@ -1,6 +1,9 @@
|
|||
#include <gtest/gtest.h>
|
||||
// FIXME: Odd failures for templates that are causing the PR to break
|
||||
// for now with discussion with @Ericson2314 to comment out.
|
||||
#if 0
|
||||
# include <gtest/gtest.h>
|
||||
|
||||
#include "ssh-store.hh"
|
||||
# include "ssh-store.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
|
@ -15,7 +18,9 @@ TEST(SSHStore, constructConfig)
|
|||
// TODO #11106, no more split on space
|
||||
"foo bar",
|
||||
},
|
||||
}};
|
||||
},
|
||||
};
|
||||
|
||||
EXPECT_EQ(
|
||||
config.remoteProgram.get(),
|
||||
(Strings{
|
||||
|
@ -23,4 +28,28 @@ TEST(SSHStore, constructConfig)
|
|||
"bar",
|
||||
}));
|
||||
}
|
||||
|
||||
TEST(MountedSSHStore, constructConfig)
|
||||
{
|
||||
MountedSSHStoreConfig config{
|
||||
"mounted-ssh",
|
||||
"localhost",
|
||||
StoreConfig::Params{
|
||||
{
|
||||
"remote-program",
|
||||
// TODO #11106, no more split on space
|
||||
"foo bar",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
EXPECT_EQ(
|
||||
config.remoteProgram.get(),
|
||||
(Strings{
|
||||
"foo",
|
||||
"bar",
|
||||
}));
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
|
23
tests/unit/libstore/uds-remote-store.cc
Normal file
23
tests/unit/libstore/uds-remote-store.cc
Normal file
|
@ -0,0 +1,23 @@
|
|||
// FIXME: Odd failures for templates that are causing the PR to break
|
||||
// for now with discussion with @Ericson2314 to comment out.
|
||||
#if 0
|
||||
# include <gtest/gtest.h>
|
||||
|
||||
# include "uds-remote-store.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
TEST(UDSRemoteStore, constructConfig)
|
||||
{
|
||||
UDSRemoteStoreConfig config{"unix", "/tmp/socket", {}};
|
||||
|
||||
EXPECT_EQ(config.path, "/tmp/socket");
|
||||
}
|
||||
|
||||
TEST(UDSRemoteStore, constructConfigWrongScheme)
|
||||
{
|
||||
EXPECT_THROW(UDSRemoteStoreConfig("http", "/tmp/socket", {}), UsageError);
|
||||
}
|
||||
|
||||
} // namespace nix
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue