From 716c966a945dfe8aceafbc1c4ce9f51f4a305c54 Mon Sep 17 00:00:00 2001 From: Nate Koenig Date: Mon, 15 Aug 2022 14:07:57 -0700 Subject: [PATCH] Attempting a more minimal Ignition to Gazebo server rename effort (#263) Signed-off-by: Nate Koenig Signed-off-by: Nate Koenig Co-authored-by: Nate Koenig --- include/ignition/fuel_tools/ModelIdentifier.hh | 5 +++++ src/ClientConfig.cc | 6 ++++++ src/ClientConfig_TEST.cc | 14 +++++++++----- src/FuelClient.cc | 12 ++++++++---- src/FuelClient_TEST.cc | 8 +++++--- src/LocalCache.cc | 3 --- src/ModelIdentifier.cc | 6 ++++++ src/ModelIdentifier_TEST.cc | 2 ++ 8 files changed, 41 insertions(+), 15 deletions(-) diff --git a/include/ignition/fuel_tools/ModelIdentifier.hh b/include/ignition/fuel_tools/ModelIdentifier.hh index e593c1c8..2840de21 100644 --- a/include/ignition/fuel_tools/ModelIdentifier.hh +++ b/include/ignition/fuel_tools/ModelIdentifier.hh @@ -64,6 +64,11 @@ namespace ignition /// \return True if the ModelIdentifier names are equal. public: bool operator==(const ModelIdentifier &_rhs) const; + /// \brief Inequality operator. + /// \param[in] _rhs ModelIdentifier to compare. + /// \return True if the ModelIdentifier names are not equal. + public: bool operator!=(const ModelIdentifier &_rhs) const; + /// \brief Returns just the last part of the model name. /// \return Model name. public: std::string Name() const; diff --git a/src/ClientConfig.cc b/src/ClientConfig.cc index 6c968115..f7dfb133 100644 --- a/src/ClientConfig.cc +++ b/src/ClientConfig.cc @@ -44,6 +44,12 @@ class ignition::fuel_tools::ClientConfigPrivate homePath, ".ignition", "fuel"); this->servers.push_back(ServerConfig()); + + // Add in fuel.gazebosim.org as another default server config. + ServerConfig gzServerConfig; + gzServerConfig.SetUrl(common::URI("https://fuel.gazebosim.org")); + gzServerConfig.SetVersion("1.0"); + this->servers.push_back(gzServerConfig); } /// \brief Clear values. diff --git a/src/ClientConfig_TEST.cc b/src/ClientConfig_TEST.cc index 82ca5b74..8cb5b035 100644 --- a/src/ClientConfig_TEST.cc +++ b/src/ClientConfig_TEST.cc @@ -76,7 +76,7 @@ std::string cachePath() TEST(ClientConfig, InitiallyDefaultServers) { ClientConfig config; - EXPECT_EQ(1u, config.Servers().size()); + EXPECT_EQ(2u, config.Servers().size()); } ///////////////////////////////////////////////// @@ -88,7 +88,7 @@ TEST(ClientConfig, ServersCanBeAdded) srv.SetUrl(common::URI("http://asdf")); config.AddServer(srv); - ASSERT_EQ(2u, config.Servers().size()); + ASSERT_EQ(3u, config.Servers().size()); EXPECT_EQ(std::string("http://asdf"), config.Servers().back().Url().Str()); } @@ -97,9 +97,11 @@ TEST(ClientConfig, ServersCanBeAdded) TEST(ClientConfig, CustomDefaultConfiguration) { ClientConfig config; - ASSERT_EQ(1u, config.Servers().size()); + ASSERT_EQ(2u, config.Servers().size()); EXPECT_EQ("https://fuel.ignitionrobotics.org", config.Servers().front().Url().Str()); + EXPECT_EQ("https://fuel.gazebosim.org", + config.Servers()[1].Url().Str()); std::string defaultCacheLocation = common::joinPaths( homePath(), ".ignition", "fuel"); @@ -134,11 +136,13 @@ TEST(ClientConfig, CustomConfiguration) EXPECT_TRUE(config.LoadConfig(testPath)); - ASSERT_EQ(3u, config.Servers().size()); + ASSERT_EQ(4u, config.Servers().size()); EXPECT_EQ("https://fuel.ignitionrobotics.org", config.Servers().front().Url().Str()); - EXPECT_EQ("https://api.ignitionfuel.org", + EXPECT_EQ("https://fuel.gazebosim.org", config.Servers()[1].Url().Str()); + EXPECT_EQ("https://api.ignitionfuel.org", + config.Servers()[2].Url().Str()); EXPECT_EQ("https://myserver", config.Servers().back().Url().Str()); diff --git a/src/FuelClient.cc b/src/FuelClient.cc index 6e764551..aaa77591 100644 --- a/src/FuelClient.cc +++ b/src/FuelClient.cc @@ -572,12 +572,16 @@ Result FuelClient::DownloadModel(const ModelIdentifier &_id, if(!res) return res; - for (auto dep : dependencies) + for (ModelIdentifier dep : dependencies) { - auto dep_res = this->DownloadModel(dep, _headers); + // Download dependency if not in the local cache + if (!this->dataPtr->cache->MatchingModel(dep)) + { + auto dep_res = this->DownloadModel(dep, _headers); - if(!dep_res) - return dep_res; + if(!dep_res) + return dep_res; + } } return res; diff --git a/src/FuelClient_TEST.cc b/src/FuelClient_TEST.cc index 712787e6..fa59f60c 100644 --- a/src/FuelClient_TEST.cc +++ b/src/FuelClient_TEST.cc @@ -538,12 +538,14 @@ TEST_F(FuelClientTest, DownloadModel) EXPECT_EQ(ResultType::FETCH_ALREADY_EXISTS, res5.Type()); } - // Download model with a dependency specified within its `model.config` + // Download model with a dependency specified within its `model.config`. + // The dependency points to fuel.gazebosim.org. { common::URI url{ - "https://fuel.ignitionrobotics.org/1.0/JShep1/models/hatchback_red_2"}; + "https://fuel.ignitionrobotics.org/1.0/openrobotics/models/hatchback red" + }; common::URI depUrl{ - "https://fuel.ignitionrobotics.org/1.0/JShep1/models/hatchback_2"}; + "https://fuel.gazebosim.org/1.0/openrobotics/models/hatchback"}; // Check it is not cached std::string cachedPath; diff --git a/src/LocalCache.cc b/src/LocalCache.cc index 934e1f55..53afb59c 100644 --- a/src/LocalCache.cc +++ b/src/LocalCache.cc @@ -99,10 +99,7 @@ std::vector LocalCachePrivate::ModelsInServer( { std::vector models; if (!common::isDirectory(_path)) - { - ignwarn << "Server directory does not exist [" << _path << "]\n"; return models; - } common::DirIter end; common::DirIter ownIter(_path); diff --git a/src/ModelIdentifier.cc b/src/ModelIdentifier.cc index 1b50d0c4..64c912cd 100644 --- a/src/ModelIdentifier.cc +++ b/src/ModelIdentifier.cc @@ -135,6 +135,12 @@ bool ModelIdentifier::operator==(const ModelIdentifier &_rhs) const return this->UniqueName() == _rhs.UniqueName(); } +////////////////////////////////////////////////// +bool ModelIdentifier::operator!=(const ModelIdentifier &_rhs) const +{ + return !(*this == _rhs); +} + ////////////////////////////////////////////////// ModelIdentifier::~ModelIdentifier() { diff --git a/src/ModelIdentifier_TEST.cc b/src/ModelIdentifier_TEST.cc index 224e8c3f..529bc036 100644 --- a/src/ModelIdentifier_TEST.cc +++ b/src/ModelIdentifier_TEST.cc @@ -105,10 +105,12 @@ TEST(ModelIdentifier, CopyConstructorDeepCopy) EXPECT_EQ(2048u, id2.FileSize()); EXPECT_EQ(d1, id2.ModifyDate()); EXPECT_EQ(d2, id2.UploadDate()); + EXPECT_EQ(id, id2); id2.SetName("hello2"); EXPECT_EQ(std::string("hello"), id.Name()); EXPECT_EQ(std::string("hello2"), id2.Name()); + EXPECT_NE(id, id2); } /////////////////////////////////////////////////