nodist_libdatasrc_la_SOURCES = datasrc_messages.h datasrc_messages.cc
libdatasrc_la_LDFLAGS = -no-undefined -version-info 1:0:1
-pkglib_LTLIBRARIES = sqlite3_ds.la memory_ds.la
+pkglib_LTLIBRARIES = sqlite3_ds.la memory_ds.la static_ds.la
sqlite3_ds_la_SOURCES = sqlite3_accessor.h sqlite3_accessor.cc
sqlite3_ds_la_SOURCES += sqlite3_accessor_link.cc
memory_ds_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
memory_ds_la_LIBADD += libdatasrc.la
+static_ds_la_SOURCES = memory_datasrc.h memory_datasrc.cc
+static_ds_la_SOURCES += static_datasrc_link.cc
+static_ds_la_LDFLAGS = -module -avoid-version
+static_ds_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
+static_ds_la_LIBADD += libdatasrc.la
+
libdatasrc_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
libdatasrc_la_LIBADD += $(top_builddir)/src/lib/dns/libdns++.la
libdatasrc_la_LIBADD += $(top_builddir)/src/lib/log/liblog.la
--- /dev/null
+// Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+// PERFORMANCE OF THIS SOFTWARE.
+
+#include "client.h"
+#include "memory_datasrc.h"
+
+#include <cc/data.h>
+
+using namespace isc::data;
+using namespace std;
+
+namespace isc {
+namespace datasrc {
+
+DataSourceClient*
+createInstance(ConstElementPtr, string& error) {
+ error = "Not yet implemented";
+ return (NULL);
+}
+
+void
+destroyInstance(DataSourceClient* instance) {
+ delete instance;
+}
+
+}
+}
using namespace isc::data;
std::string SQLITE_DBFILE_EXAMPLE_ORG = TEST_DATA_DIR "/example.org.sqlite3";
+const std::string STATIC_DS_FILE = TEST_DATA_DIR "/static.zone";
+const std::string ROOT_ZONE_FILE = TEST_DATA_DIR "/root.zone";
namespace {
DataSourceError);
}
+// Check the static data source can be loaded.
+TEST(FactoryTest, staticDS) {
+ // The only configuration is the file to load.
+ const ConstElementPtr config(new StringElement(STATIC_DS_FILE));
+ // Get the data source
+ DataSourceClientContainer dsc("static", config);
+ // And try getting something out to see if it really works.
+ DataSourceClient::FindResult
+ result(dsc.getInstance().findZone(isc::dns::Name("BIND")));
+ ASSERT_EQ(result::SUCCESS, result.code);
+ EXPECT_EQ(isc::dns::Name("BIND"), result.zone_finder->getOrigin());
+ EXPECT_EQ(isc::dns::RRClass::CH(), result.zone_finder->getClass());
+ const isc::dns::ConstRRsetPtr
+ version(result.zone_finder->find(isc::dns::Name("VERSION.BIND"),
+ isc::dns::RRType::TXT())->rrset);
+ ASSERT_NE(isc::dns::ConstRRsetPtr(), version);
+ EXPECT_EQ(isc::dns::Name("VERSION.BIND"), version->getName());
+ EXPECT_EQ(isc::dns::RRClass::CH(), version->getClass());
+ EXPECT_EQ(isc::dns::RRType::TXT(), version->getType());
+}
+
+// Check that file not containing BIND./CH is rejected
+TEST(FactoryTest, staticDSBadFile) {
+ // The only configuration is the file to load.
+ const ConstElementPtr config(new StringElement(STATIC_DS_FILE));
+ // See it does not want the file
+ EXPECT_THROW(DataSourceClientContainer("static", config), DataSourceError);
+}
+
+// Check that some bad configs are rejected
+TEST(FactoryTest, staticDSBadConfig) {
+ const char* configs[] = {
+ // The file does not exist
+ "\"/does/not/exist\"",
+ // Bad types
+ "null",
+ "42",
+ "{}",
+ "[]",
+ "true",
+ NULL
+ };
+ for (const char** config(configs); *config; ++config) {
+ SCOPED_TRACE(*config);
+ EXPECT_THROW(DataSourceClientContainer("static",
+ Element::fromJSON(*config)),
+ DataSourceError);
+ }
+}
+
} // end anonymous namespace