[svn] commit: r2893 - in /branches/trac232/src: bin/auth/ lib/datasrc/ lib/datasrc/python/ lib/datasrc/python/tests/ lib/datasrc/tests/ lib/dns/python/
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Sep 9 14:06:43 UTC 2010
Author: jelte
Date: Thu Sep 9 14:06:43 2010
New Revision: 2893
Log:
refactored a few enum names
updated some documentation in data_source.h
removed debug prints
removed test code from auth
Modified:
branches/trac232/src/bin/auth/auth.spec.pre.in
branches/trac232/src/bin/auth/auth_srv.cc
branches/trac232/src/bin/auth/main.cc
branches/trac232/src/lib/datasrc/data_source.cc
branches/trac232/src/lib/datasrc/data_source.h
branches/trac232/src/lib/datasrc/python/libdata_source_python.cc
branches/trac232/src/lib/datasrc/python/tests/data_source_python_test.py
branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
branches/trac232/src/lib/datasrc/sqlite3_datasrc.h
branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc
branches/trac232/src/lib/dns/python/rrclass_python.cc
Modified: branches/trac232/src/bin/auth/auth.spec.pre.in
==============================================================================
--- branches/trac232/src/bin/auth/auth.spec.pre.in (original)
+++ branches/trac232/src/bin/auth/auth.spec.pre.in Thu Sep 9 14:06:43 2010
@@ -14,115 +14,6 @@
"command_name": "shutdown",
"command_description": "Shut down authoritative DNS server",
"command_args": []
- },
- {
- "command_name": "add_rr",
- "command_description": "Add an RR to the given zone (temp for testing)",
- "command_args": [
- { "item_name": "zone_name",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_name",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_class",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_type",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_ttl",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_rdata",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- }
- ]
- },
- {
- "command_name": "del_rr",
- "command_description": "Remove rr from the given zone (temp for testing)",
- "command_args": [
- { "item_name": "zone_name",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_name",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_class",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_type",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_rdata",
- "item_type": "string",
- "item_optional": true,
- "item_default": ""
- }
- ]
- },
- {
- "command_name": "load_zone",
- "command_description": "Load a zone (temp for testing)",
- "command_args": [
- { "item_name": "zone_name",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_class",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "file_name",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- ]
- },
- {
- "command_name": "ixfr",
- "command_description": "see what IXFR would do",
- "command_args": [
- { "item_name": "zone_name",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "rr_class",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- },
- { "item_name": "response_file",
- "item_type": "string",
- "item_optional": false,
- "item_default": ""
- }
- ]
}
]
}
Modified: branches/trac232/src/bin/auth/auth_srv.cc
==============================================================================
--- branches/trac232/src/bin/auth/auth_srv.cc (original)
+++ branches/trac232/src/bin/auth/auth_srv.cc Thu Sep 9 14:06:43 2010
@@ -530,273 +530,3 @@
return (isc::config::createAnswer(1, error.what()));
}
}
-
-//
-// TEMP, just a bindctl command to add an RR
-//
-
-ConstElementPtr
-AuthSrv::addRR(isc::data::ConstElementPtr args)
-{
- Name zone_name = Name(args->get("zone_name")->stringValue());
- RRClass rrclass = RRClass(args->get("rr_class")->stringValue());
- DataSrcMatch match(zone_name, rrclass);
- impl_->data_sources_.findClosestEnclosure(match);
- DataSrc* datasource = const_cast<DataSrc*>(match.getDataSource());
- if (datasource) {
- RRsetPtr rrset = RRsetPtr(new RRset(Name(args->get("rr_name")->stringValue()),
- rrclass,
- RRType(args->get("rr_type")->stringValue()),
- RRTTL(args->get("rr_ttl")->stringValue())));
- RdataPtr rdata = createRdata(rrset->getType(), rrset->getClass(), args->get("rr_rdata")->stringValue());
- rrset->addRdata(rdata);
- DataSrcTransaction transaction(datasource, zone_name, RRClass::IN());
- DataSrc::TransactionResult r = datasource->startTransaction(transaction);
- if (r != DataSrc::T_SUCCESS) {
- return isc::config::createAnswer(r, "error starting transaction");
- }
- r = datasource->addRRset(transaction, rrset);
- std::cout << "[XX] RESULT: " << r << std::endl;
- if (r != DataSrc::T_SUCCESS) {
- // log? rollback immediately?
- }
- r = datasource->commitTransaction(transaction);
- std::cout << "[XX] RESULT rollback: " << r << std::endl;
- if (r == DataSrc::T_SUCCESS) {
- return isc::config::createAnswer();
- } else {
- return isc::config::createAnswer(r, "error");
- }
-
- } else {
- return isc::config::createAnswer(1, "No data store found for zone");
- }
-}
-
-ConstElementPtr
-AuthSrv::delRR(isc::data::ConstElementPtr args)
-{
- Name zone_name = Name(args->get("zone_name")->stringValue());
- RRClass rrclass = RRClass(args->get("rr_class")->stringValue());
-
- DataSrcMatch match(zone_name, rrclass);
- impl_->data_sources_.findClosestEnclosure(match);
- DataSrc* datasource = const_cast<DataSrc*>(match.getDataSource());
- // hmz can't we assign RRTypes?
- if (datasource) {
- RRsetPtr rrset;
- if (args->get("rr_type")->stringValue() == "ANY") {
- rrset = RRsetPtr(new RRset(Name(args->get("rr_name")->stringValue()),
- rrclass,
- RRType::ANY(),
- RRTTL(0)));
- } else {
- rrset = RRsetPtr(new RRset(Name(args->get("rr_name")->stringValue()),
- rrclass,
- RRType(args->get("rr_type")->stringValue()),
- RRTTL(0)));
- if (args->contains("rr_rdata")) {
- RdataPtr rdata = createRdata(rrset->getType(), rrset->getClass(), args->get("rr_rdata")->stringValue());
- rrset->addRdata(rdata);
- }
- }
- DataSrcTransaction transaction(datasource, zone_name, RRClass::IN());
- DataSrc::TransactionResult r = datasource->startTransaction(transaction);
- if (r != DataSrc::T_SUCCESS) {
- return isc::config::createAnswer(r, "error starting transaction");
- }
- r = datasource->delRRset(transaction, rrset);
- std::cout << "[XX] RESULT: " << r << std::endl;
- if (r != DataSrc::T_SUCCESS) {
- // log? rollback immediately?
- }
- r = datasource->commitTransaction(transaction);
- std::cout << "[XX] RESULT rollback: " << r << std::endl;
- if (r == DataSrc::T_SUCCESS) {
- return isc::config::createAnswer();
- } else {
- return isc::config::createAnswer(r, "error");
- }
- } else {
- return isc::config::createAnswer(1, "No data store found for zone");
- }
-}
-
-//
-// ALSO TEMP, just a bindctl command to load a zone
-// (not smart and probably fails on almost everything, is just here
-// to quickly test the backend)
-// one RR per line, must be fully 'expanded'
-// can only handle 1 rr per name/class/type
-ConstElementPtr
-AuthSrv::loadZone(isc::data::ConstElementPtr args)
-{
- ifstream myfile(args->get("file_name")->stringValue().c_str());
-
- RRsetList rrsetlist;
- try {
- if (myfile.is_open()) {
- while (! myfile.eof() ) {
- //stringstream ss;
- //ss << myfile;
- //cout << "X: " << ss.str() << endl;
- string s;
- myfile >> s;
- Name n(s);
- myfile >> s;
- RRTTL ttl(s);
- myfile >> s;
- RRClass rrclass(s);
- myfile >> s;
- RRType rrtype(s);
- string line;
- getline(myfile, line);
- while (line[0] == ' ' || line[0] == '\t') {
- line.erase(0, 1);
- }
- std::cout << "[XX] rdata: " << line << std::endl;
- RdataPtr rdata = createRdata(rrtype, rrclass, line);
- std::cout << "[XX] rdata read: " << line << std::endl;
- RRsetPtr rrset = RRsetPtr(new RRset(n,
- rrclass,
- rrtype,
- ttl));
- rrset->addRdata(rdata);
-
- try {
- rrsetlist.addRRset(rrset);
- } catch (DuplicateRRset ds) {
- rrsetlist.findRRset(n, rrtype, rrclass)->addRdata(rdata);
- }
- }
- myfile.close();
- } else {
- return isc::config::createAnswer(1, "unable to open file");
- }
-
- std::cout << "[XX] RRSETLIST: " << std::endl;
- BOOST_FOREACH(RRsetPtr rrs, rrsetlist) {
- std::cout << rrs->toText() << std::endl;
- }
-
- std::cout << "[XX] END OF RRSETLIST" << std::endl;
- Name zone_name(args->get("zone_name")->stringValue());
- RRClass rrclass(args->get("rr_class")->stringValue());
- DataSrcMatch match(zone_name, rrclass);
- impl_->data_sources_.findClosestEnclosure(match);
- DataSrc* datasource = const_cast<DataSrc*>(match.getDataSource());
- // hmz can't we assign RRTypes?
- if (datasource) {
- DataSrcTransaction transaction(datasource, zone_name, RRClass::IN());
- DataSrc::TransactionResult r = datasource->startTransaction(transaction);
- if (r != DataSrc::T_SUCCESS) {
- return isc::config::createAnswer(r, "error starting transaction");
- }
- r = datasource->replaceZone(transaction, rrsetlist);
- std::cout << "[XX] RESULT: " << r << std::endl;
- if (r != DataSrc::T_SUCCESS) {
- // log? rollback immediately?
- }
- r = datasource->commitTransaction(transaction);
- std::cout << "[XX] RESULT rollback: " << r << std::endl;
- if (r == DataSrc::T_SUCCESS) {
- return isc::config::createAnswer();
- } else {
- return isc::config::createAnswer(r, "error");
- }
- } else {
- return isc::config::createAnswer(1, "No data store found for zone");
- }
- return isc::config::createAnswer();
- } catch (isc::Exception exc) {
- return isc::config::createAnswer(1, exc.what());
- }
-}
-
-ConstElementPtr
-AuthSrv::ixfr(isc::data::ConstElementPtr args)
-{
- try {
- Name zone_name = Name(args->get("zone_name")->stringValue());
- RRClass rrclass = RRClass(args->get("rr_class")->stringValue());
-
- // fake ixfr response from file
- ifstream myfile(args->get("response_file")->stringValue().c_str());
-
- Message m(Message::RENDER);
- m.setHeaderFlag(MessageFlag::AA());
- m.setHeaderFlag(MessageFlag::QR());
- m.setQid(1234);
- m.setOpcode(isc::dns::Opcode::QUERY());
- m.setRcode(isc::dns::Rcode::NOERROR());
- if (myfile.is_open()) {
- while (! myfile.eof() ) {
- //stringstream ss;
- //ss << myfile;
- //cout << "X: " << ss.str() << endl;
- string s;
- myfile >> s;
- if (s == "") {
- continue;
- }
- std::cout << "[XX] read name: '" << s << "'" << std::endl;
- Name n(s);
- std::cout << "[XX] name read " << std::endl;
- myfile >> s;
- RRTTL ttl(s);
- myfile >> s;
- RRClass rrclass(s);
- myfile >> s;
- RRType rrtype(s);
- string line;
- getline(myfile, line);
- while (line[0] == ' ' || line[0] == '\t') {
- line.erase(0, 1);
- }
- std::cout << "[XX] rdata line: " << line << std::endl;
- RdataPtr rdata = createRdata(rrtype, rrclass, line);
- std::cout << "[XX] rdata line read" << std::endl;
- RRsetPtr rrset = RRsetPtr(new RRset(n,
- rrclass,
- rrtype,
- ttl));
- std::cout << "[XX] rrset created" << std::endl;
- rrset->addRdata(rdata);
- std::cout << "[XX] rdata added" << std::endl;
- m.addRRset(Section::ANSWER(), rrset, false);
- std::cout << "[XX] rrset added" << std::endl;
- }
- }
- std::cout << "[XX] read IXFR 'message' file" << std::endl;
- std::cout << m << std::endl;
- std::cout << "[XX] end of IXFR 'message'" << std::endl;
-
- DataSrcMatch match(zone_name, rrclass);
- impl_->data_sources_.findClosestEnclosure(match);
- DataSrc* datasource = const_cast<DataSrc*>(match.getDataSource());
- if (datasource) {
- DataSrcTransaction transaction(datasource, zone_name, RRClass::IN());
- DataSrc::TransactionResult result = datasource->startTransaction(transaction);
- if (result != DataSrc::T_SUCCESS) {
- return isc::config::createAnswer(result, "error starting transaction");
- }
-
- DataSrc::Result ixfr_result = datasource->doIXFR(transaction,
- m.beginSection(Section::ANSWER()),
- m.endSection(Section::ANSWER()));
- if (ixfr_result != DataSrc::SUCCESS) {
- return isc::config::createAnswer(result, "Error in doIXFR");
- } else {
- datasource->commitTransaction(transaction);
- return isc::config::createAnswer();
- }
- } else {
- return isc::config::createAnswer(1, "No data store found for zone");
- }
- } catch (isc::Exception exc) {
- return isc::config::createAnswer(1, exc.what());
- }
-}
-
-
-
Modified: branches/trac232/src/bin/auth/main.cc
==============================================================================
--- branches/trac232/src/bin/auth/main.cc (original)
+++ branches/trac232/src/bin/auth/main.cc Thu Sep 9 14:06:43 2010
@@ -79,14 +79,6 @@
cout << args << endl;
/* let's add that message to our answer as well */
answer = createAnswer(0, args);
- } else if (command == "add_rr") {
- answer = auth_server->addRR(args);
- } else if (command == "del_rr") {
- answer = auth_server->delRR(args);
- } else if (command == "load_zone") {
- answer = auth_server->loadZone(args);
- } else if (command == "ixfr") {
- answer = auth_server->ixfr(args);
} else if (command == "shutdown") {
io_service->stop();
}
Modified: branches/trac232/src/lib/datasrc/data_source.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/data_source.cc (original)
+++ branches/trac232/src/lib/datasrc/data_source.cc Thu Sep 9 14:06:43 2010
@@ -1249,49 +1249,49 @@
return (NOT_IMPLEMENTED);
}
-DataSrc::TransactionResult
+DataSrc::WriteResult
DataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
DataSrc::commitTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
DataSrc::rollbackTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
DataSrc::addRRset(DataSrcTransaction& transaction UNUSED_PARAM,
const isc::dns::ConstRRsetPtr rrset UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
DataSrc::delRRset(DataSrcTransaction& transaction UNUSED_PARAM,
isc::dns::ConstRRsetPtr rrset UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
DataSrc::delZone(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
DataSrc::replaceZone(DataSrcTransaction& transaction UNUSED_PARAM,
const RRsetList& UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
+ return (W_NOT_IMPLEMENTED);
}
static bool
@@ -1432,10 +1432,10 @@
return (Rcode::SERVFAIL());
} else {
// TODO: no serial arithmetic yet?
- if (delRRset(transaction, *(soa_list.begin())) != T_SUCCESS) {
+ if (delRRset(transaction, *(soa_list.begin())) != W_SUCCESS) {
return (Rcode::SERVFAIL());
}
- if (addRRset(transaction, update) != T_SUCCESS) {
+ if (addRRset(transaction, update) != W_SUCCESS) {
return (Rcode::SERVFAIL());
}
}
@@ -1445,11 +1445,11 @@
} else {
if (update->getClass() == RRClass::ANY() ||
update->getClass() == RRClass::NONE()) {
- if (delRRset(transaction, update) != T_SUCCESS) {
+ if (delRRset(transaction, update) != W_SUCCESS) {
return (Rcode::SERVFAIL());
}
} else {
- if (addRRset(transaction, update) != T_SUCCESS) {
+ if (addRRset(transaction, update) != W_SUCCESS) {
return (Rcode::SERVFAIL());
}
}
@@ -1653,50 +1653,50 @@
}
}
-DataSrc::TransactionResult
+DataSrc::WriteResult
MetaDataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
MetaDataSrc::commitTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
MetaDataSrc::rollbackTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
MetaDataSrc::addRRset(DataSrcTransaction& transaction UNUSED_PARAM,
isc::dns::ConstRRsetPtr rrset UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
MetaDataSrc::delRRset(DataSrcTransaction& transaction UNUSED_PARAM,
isc::dns::ConstRRsetPtr rrset UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
MetaDataSrc::delZone(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-DataSrc::TransactionResult
+ return (W_NOT_IMPLEMENTED);
+}
+
+DataSrc::WriteResult
MetaDataSrc::replaceZone(DataSrcTransaction& transaction UNUSED_PARAM,
const isc::dns::RRsetList& rrset_list UNUSED_PARAM)
{
- return (T_NOT_IMPLEMENTED);
-}
-
-}
-}
+ return (W_NOT_IMPLEMENTED);
+}
+
+}
+}
Modified: branches/trac232/src/lib/datasrc/data_source.h
==============================================================================
--- branches/trac232/src/lib/datasrc/data_source.h (original)
+++ branches/trac232/src/lib/datasrc/data_source.h Thu Sep 9 14:06:43 2010
@@ -84,13 +84,15 @@
NOT_IMPLEMENTED
};
- enum TransactionResult {
- T_SUCCESS, // ok
- T_ERROR, // general (code) error
- T_DB_ERROR, // (write) error in the backend
- T_NOT_IMPLEMENTED, // write functions not implemented
- T_NO_SUCH_ZONE, // zone not known to this data source
- T_NO_SUCH_DATA // attempt to delete nonexistant data
+ // For write-related methods, we have a separate list of
+ // return values, since the errors that can occur are different
+ enum WriteResult {
+ W_SUCCESS, // ok
+ W_ERROR, // general (code) error
+ W_DB_ERROR, // (write) error in the backend
+ W_NOT_IMPLEMENTED, // write functions not implemented
+ W_NO_SUCH_ZONE, // zone not known to this data source
+ W_NO_SUCH_DATA // attempt to delete nonexistant data
};
// These flags indicate conditions encountered while processing a query.
@@ -170,6 +172,7 @@
virtual Result findCoveringNSEC3(const isc::dns::Name& zonename,
std::string& hash,
isc::dns::RRsetList& target) const = 0;
+
};
///
@@ -349,7 +352,7 @@
// methods. By default they will return NOT_IMPLEMENTED.
///
/// \name Low-level functions for writable data sources.
- /// The default functions for these return T_NOT_IMPLEMENTED
+ /// The default functions for these return W_NOT_IMPLEMENTED
/// A data source that supports writes MUST override these methods.
///
//@{
@@ -361,37 +364,40 @@
/// transaction object.
/// \param transaction, a transaction that has been initialized for
/// a zone held by this data source.
- /// \return T_SUCCESS on success, error value otherwise
- virtual TransactionResult startTransaction(DataSrcTransaction& transaction);
+ /// \return W_SUCCESS on success, error value otherwise
+ virtual WriteResult startTransaction(DataSrcTransaction& transaction);
/// \brief Commit the changes made in the given transaction
/// The transaction object must be in state RUNNING.
/// On successs, the transaction will be in state DONE.
/// \param transaction to be committed.
- /// \return T_SUCCESS on success, error value otherwise
- virtual TransactionResult commitTransaction(DataSrcTransaction& transaction);
+ /// \return W_SUCCESS on success, error value otherwise
+ virtual WriteResult commitTransaction(DataSrcTransaction& transaction);
/// \brief Roll back the changes made in the given transaction
/// The transaction object must be in state RUNNING.
/// On successs, the transaction will be in state DONE.
/// \param transaction to be rolled back.
- /// \return T_SUCCESS on success, error value otherwise
- virtual TransactionResult rollbackTransaction(DataSrcTransaction& transaction);
+ /// \return W_SUCCESS on success, error value otherwise
+ virtual WriteResult rollbackTransaction(DataSrcTransaction& transaction);
/// \brief Add an RRset to the zone.
/// \param transaction The transaction in which this addition is
/// performed.
/// \param RRsetPtr The RRset to add
- /// \param T_SUCCESS on success.
- virtual TransactionResult addRRset(DataSrcTransaction& transaction,
+ /// \param W_SUCCESS on success.
+ virtual WriteResult addRRset(DataSrcTransaction& transaction,
isc::dns::ConstRRsetPtr rrset);
/// \brief Delete an RRset from the zone.
+ /// If the given RRset contains no Rdata parts, all RRs with
+ /// the name, type and class of the given rrset are deleted.
+ /// Otherwise every RR in the given RRset is deleted.
/// \param transaction The transaction in which this deletion is
/// performed.
/// \param RRsetPtr The RRset to delete
- /// \param T_SUCCESS on success.
- virtual TransactionResult delRRset(DataSrcTransaction& transaction,
+ /// \param W_SUCCESS on success.
+ virtual WriteResult delRRset(DataSrcTransaction& transaction,
isc::dns::ConstRRsetPtr rrset);
/// \brief Remove an entire zone from the data source
@@ -399,15 +405,15 @@
/// the datasource.
/// \param transaction The transaction in which this deletion is
/// performed.
- /// \return T_SUCCESS on success
- virtual TransactionResult delZone(DataSrcTransaction& transaction);
+ /// \return W_SUCCESS on success
+ virtual WriteResult delZone(DataSrcTransaction& transaction);
/// \brief Replace the contents of the zone by the given list of
/// rrsets.
/// This deletes *all* current RRsets in the zone.
/// \param transaction The transaction to perform the operations on
- /// \return T_SUCCESS on success
- virtual TransactionResult replaceZone(DataSrcTransaction& transaction,
+ /// \return W_SUCCESS on success
+ virtual WriteResult replaceZone(DataSrcTransaction& transaction,
const isc::dns::RRsetList& rrsets);
//@}
@@ -422,7 +428,7 @@
/// there are rrs for class IN.
/// If the given rrset has 0 rdata records; any RR with the given
/// name, class and type will result in a positive result,
- /// otherwise the rrset in the data source4 must be exactly the
+ /// otherwise the rrset in the data source must be exactly the
/// same.
///
/// \param transaction The transaction in which the check is
@@ -542,16 +548,16 @@
// Writable data sources
//
// see comments at DataSrc
- virtual TransactionResult startTransaction(DataSrcTransaction& transaction);
- virtual TransactionResult commitTransaction(DataSrcTransaction& transaction);
- virtual TransactionResult rollbackTransaction(DataSrcTransaction& transaction);
+ virtual WriteResult startTransaction(DataSrcTransaction& transaction);
+ virtual WriteResult commitTransaction(DataSrcTransaction& transaction);
+ virtual WriteResult rollbackTransaction(DataSrcTransaction& transaction);
- virtual TransactionResult addRRset(DataSrcTransaction& transaction,
+ virtual WriteResult addRRset(DataSrcTransaction& transaction,
isc::dns::ConstRRsetPtr rrset);
- virtual TransactionResult delRRset(DataSrcTransaction& transaction,
+ virtual WriteResult delRRset(DataSrcTransaction& transaction,
isc::dns::ConstRRsetPtr rrset);
- virtual TransactionResult delZone(DataSrcTransaction& transaction);
- virtual TransactionResult replaceZone(DataSrcTransaction& transaction,
+ virtual WriteResult delZone(DataSrcTransaction& transaction);
+ virtual WriteResult replaceZone(DataSrcTransaction& transaction,
const isc::dns::RRsetList& rrsets);
// end of writable data sources part
private:
Modified: branches/trac232/src/lib/datasrc/python/libdata_source_python.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/python/libdata_source_python.cc (original)
+++ branches/trac232/src/lib/datasrc/python/libdata_source_python.cc Thu Sep 9 14:06:43 2010
@@ -1099,12 +1099,12 @@
PyDict_SetItemString(datasrc_type.tp_dict, "ERROR", Py_BuildValue("I", DataSrc::ERROR));
PyDict_SetItemString(datasrc_type.tp_dict, "NOT_IMPLEMENTED", Py_BuildValue("I", DataSrc::NOT_IMPLEMENTED));
- PyDict_SetItemString(datasrc_type.tp_dict, "T_SUCCESS", Py_BuildValue("I", DataSrc::T_SUCCESS));
- PyDict_SetItemString(datasrc_type.tp_dict, "T_ERROR", Py_BuildValue("I", DataSrc::T_ERROR));
- PyDict_SetItemString(datasrc_type.tp_dict, "T_DB_ERROR", Py_BuildValue("I", DataSrc::T_DB_ERROR));
- PyDict_SetItemString(datasrc_type.tp_dict, "T_NOT_IMPLEMENTED", Py_BuildValue("I", DataSrc::T_NOT_IMPLEMENTED));
- PyDict_SetItemString(datasrc_type.tp_dict, "T_NO_SUCH_ZONE", Py_BuildValue("I", DataSrc::T_NO_SUCH_ZONE));
- PyDict_SetItemString(datasrc_type.tp_dict, "T_NO_SUCH_DATA", Py_BuildValue("I", DataSrc::T_NO_SUCH_DATA));
+ PyDict_SetItemString(datasrc_type.tp_dict, "W_SUCCESS", Py_BuildValue("I", DataSrc::W_SUCCESS));
+ PyDict_SetItemString(datasrc_type.tp_dict, "W_ERROR", Py_BuildValue("I", DataSrc::W_ERROR));
+ PyDict_SetItemString(datasrc_type.tp_dict, "W_DB_ERROR", Py_BuildValue("I", DataSrc::W_DB_ERROR));
+ PyDict_SetItemString(datasrc_type.tp_dict, "W_NOT_IMPLEMENTED", Py_BuildValue("I", DataSrc::W_NOT_IMPLEMENTED));
+ PyDict_SetItemString(datasrc_type.tp_dict, "W_NO_SUCH_ZONE", Py_BuildValue("I", DataSrc::W_NO_SUCH_ZONE));
+ PyDict_SetItemString(datasrc_type.tp_dict, "W_NO_SUCH_DATA", Py_BuildValue("I", DataSrc::W_NO_SUCH_DATA));
//
// DataSrcTransaction
Modified: branches/trac232/src/lib/datasrc/python/tests/data_source_python_test.py
==============================================================================
--- branches/trac232/src/lib/datasrc/python/tests/data_source_python_test.py (original)
+++ branches/trac232/src/lib/datasrc/python/tests/data_source_python_test.py Thu Sep 9 14:06:43 2010
@@ -181,7 +181,7 @@
self.assertEqual(DataSrcTransaction.INIT, transaction.get_state())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
self.assertEqual(DataSrcTransaction.RUNNING, transaction.get_state())
self.ds.rollback_transaction(transaction)
@@ -189,7 +189,7 @@
transaction = DataSrcTransaction(self.ds, Name("doesnotexist.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_NO_SUCH_ZONE, result)
+ self.assertEqual(DataSrc.W_NO_SUCH_ZONE, result)
self.assertEqual(DataSrcTransaction.INIT, transaction.get_state())
def test_add_rrset_rollback(self):
@@ -199,11 +199,11 @@
self.assertEqual(DataSrcTransaction.INIT, transaction.get_state())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
# empty rrset, should fail on add
result = self.ds.add_rrset(transaction, rrset)
- self.assertEqual(DataSrc.T_ERROR, result)
+ self.assertEqual(DataSrc.W_ERROR, result)
# check if rrset does not exist, then add it but roll back
# check for nonexistence again, then add it and commit
@@ -215,7 +215,7 @@
rrset.add_rdata(Rdata(rrset.get_type(), rrset.get_class(), "192.0.2.1"))
result = self.ds.add_rrset(transaction, rrset)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
self.ds.rollback_transaction(transaction)
@@ -235,11 +235,11 @@
transaction = DataSrcTransaction(self.ds, Name("example.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.add_rrset(transaction, rrset)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.commit_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = []
n = self.ds.find_addrs(Name("added.example.com"), RRClass.IN(), result, 0, Name("example.com"))
@@ -255,7 +255,7 @@
self.assertEqual(DataSrcTransaction.INIT, transaction.get_state())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = []
n = self.ds.find_addrs(Name("www.example.com"), RRClass.IN(), result, 0, Name("example.com"))
@@ -263,7 +263,7 @@
self.assertEqual(1, len(result))
result = self.ds.del_rrset(transaction, rrset)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
self.ds.rollback_transaction(transaction)
@@ -283,11 +283,11 @@
transaction = DataSrcTransaction(self.ds, Name("example.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.del_rrset(transaction, rrset)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.commit_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = []
n = self.ds.find_addrs(Name("www.example.com"), RRClass.IN(), result, 0, Name("example.com"))
@@ -307,11 +307,11 @@
transaction = DataSrcTransaction(self.ds, Name("example.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.del_rrset(transaction, rrset)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.commit_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = []
n = self.ds.find_rrset(Name("www.example.com"), RRClass.IN(), RRType.A(), result, 0, Name("example.com"))
@@ -321,13 +321,13 @@
def test_del_zone(self):
transaction = DataSrcTransaction(self.ds, Name("example.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.del_zone(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.commit_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = []
n = self.ds.find_rrset(Name("www.example.com"), RRClass.IN(), RRType.A(), result, 0, Name("example.com"))
@@ -336,12 +336,12 @@
transaction = DataSrcTransaction(self.ds, Name("example.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_NO_SUCH_ZONE, result)
+ self.assertEqual(DataSrc.W_NO_SUCH_ZONE, result)
def test_replace_zone(self):
transaction = DataSrcTransaction(self.ds, Name("example.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = []
n = self.ds.find_rrset(Name("www.example.com"), RRClass.IN(), RRType.A(), result, 0, Name("example.com"))
@@ -350,14 +350,14 @@
new_rrs = []
result = self.ds.replace_zone(transaction, new_rrs)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
self.assertRaises(TypeError, self.ds.replace_zone, transaction)
self.assertRaises(TypeError, self.ds.replace_zone, transaction, 1)
self.assertRaises(TypeError, self.ds.replace_zone, transaction, [1])
result = self.ds.commit_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = []
n = self.ds.find_rrset(Name("www.example.com"), RRClass.IN(), RRType.A(), result, 0, Name("example.com"))
@@ -367,7 +367,7 @@
def test_have_rrset(self):
transaction = DataSrcTransaction(self.ds, Name("example.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
rrset1 = RRset(Name("www.example.com"), RRClass.IN(), RRType.A(), RRTTL(3600))
rrset1.add_rdata(Rdata(rrset1.get_type(), rrset1.get_class(), "192.0.2.1"))
@@ -385,7 +385,7 @@
def test_update_check_prerequisite(self):
transaction = DataSrcTransaction(self.ds, Name("example.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
rrset1 = RRset(Name("www.example.com"), RRClass.IN(), RRType.A(), RRTTL(0))
rrset1.add_rdata(Rdata(rrset1.get_type(), rrset1.get_class(), "192.0.2.1"))
@@ -416,13 +416,13 @@
transaction = DataSrcTransaction(self.ds, Name("example.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.do_ixfr(transaction, rrsets)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.commit_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = []
n = self.ds.find_addrs(Name("www.example.com"), RRClass.IN(), result, 0, Name("example.com"))
@@ -441,13 +441,13 @@
transaction = DataSrcTransaction(self.ds, Name("example.com"), RRClass.IN())
result = self.ds.start_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = self.ds.do_ixfr(transaction, rrsets)
- self.assertEqual(DataSrc.T_ERROR, result)
+ self.assertEqual(DataSrc.W_ERROR, result)
result = self.ds.rollback_transaction(transaction)
- self.assertEqual(DataSrc.T_SUCCESS, result)
+ self.assertEqual(DataSrc.W_SUCCESS, result)
result = []
n = self.ds.find_addrs(Name("www.example.com"), RRClass.IN(), result, 0, Name("example.com"))
@@ -462,8 +462,8 @@
else:
testdata_path = "../tests/testdata"
-if "TESTDATA_OUT_PATH" in os.environ:
- testdata_out_path = os.environ["TESTDATA_OUT_PATH"]
+if "TESTDATA_OUW_PATH" in os.environ:
+ testdata_out_path = os.environ["TESTDATA_OUW_PATH"]
else:
testdata_out_path = "../tests/testdata"
Modified: branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc (original)
+++ branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc Thu Sep 9 14:06:43 2010
@@ -778,63 +778,63 @@
return (SUCCESS);
}
-DataSrc::TransactionResult
+DataSrc::WriteResult
Sqlite3DataSrc::startTransaction(DataSrcTransaction& transaction)
{
if (transaction.getState() != DataSrcTransaction::INIT) {
- return DataSrc::T_ERROR;
+ return DataSrc::W_ERROR;
}
int result = sqlite3_exec(dbparameters->db_, w_start_transaction_str, NULL, NULL, NULL);
if (result == SQLITE_OK) {
int zone_id = hasExactZone(transaction.getZoneName().toText().c_str());
if (zone_id <= 0) {
- return DataSrc::T_NO_SUCH_ZONE;
+ return DataSrc::W_NO_SUCH_ZONE;
}
isc::data::ElementPtr trans_data = isc::data::Element::createMap();
trans_data->set("zone_id", isc::data::Element::create(zone_id));
transaction.setData(trans_data);
transaction.setState(DataSrcTransaction::RUNNING);
- return DataSrc::T_SUCCESS;
- } else {
- return DataSrc::T_DB_ERROR;
- }
-}
-
-DataSrc::TransactionResult
+ return DataSrc::W_SUCCESS;
+ } else {
+ return DataSrc::W_DB_ERROR;
+ }
+}
+
+DataSrc::WriteResult
Sqlite3DataSrc::commitTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::T_ERROR;
+ return DataSrc::W_ERROR;
}
int result = sqlite3_exec(dbparameters->db_, w_commit_transaction_str, NULL, NULL, NULL);
if (result == SQLITE_OK) {
transaction.setState(DataSrcTransaction::DONE);
- return DataSrc::T_SUCCESS;
- } else {
- return DataSrc::T_DB_ERROR;
- }
-}
-
-DataSrc::TransactionResult
+ return DataSrc::W_SUCCESS;
+ } else {
+ return DataSrc::W_DB_ERROR;
+ }
+}
+
+DataSrc::WriteResult
Sqlite3DataSrc::rollbackTransaction(DataSrcTransaction& transaction)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::T_ERROR;
+ return DataSrc::W_ERROR;
}
int result = sqlite3_exec(dbparameters->db_, w_rollback_transaction_str, NULL, NULL, NULL);
if (result == SQLITE_OK) {
transaction.setState(DataSrcTransaction::DONE);
- return DataSrc::T_SUCCESS;
- } else {
- return DataSrc::T_DB_ERROR;
- }
-}
-
-
-DataSrc::TransactionResult
+ return DataSrc::W_SUCCESS;
+ } else {
+ return DataSrc::W_DB_ERROR;
+ }
+}
+
+
+DataSrc::WriteResult
Sqlite3DataSrc::addRR(int zone_id,
const isc::dns::Name& name,
const isc::dns::RRType& rrtype,
@@ -890,40 +890,37 @@
rdata.toText() << " to SQL statement (query)");
}
- std::cout << "[XX] query prepared, executing" << std::endl;
int result = sqlite3_step(query);
sqlite3_reset(query);
if (result == SQLITE_DONE) {
- return DataSrc::T_SUCCESS;
- } else {
- std::cout << "[XX] sqlite3 add_rr error: " << result << std::endl;;
- std::cout << "[XX] " << sqlite3_errmsg(dbparameters->db_) << std::endl;
-
- return DataSrc::T_DB_ERROR;
- }
-
-}
-
-DataSrc::TransactionResult
+ return DataSrc::W_SUCCESS;
+ } else {
+ return DataSrc::W_DB_ERROR;
+ }
+
+}
+
+DataSrc::WriteResult
Sqlite3DataSrc::addRRset(DataSrcTransaction& transaction,
isc::dns::ConstRRsetPtr rrset)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::T_ERROR;
+ return DataSrc::W_ERROR;
}
if (rrset->getRdataCount() == 0) {
- return DataSrc::T_ERROR;
+ return DataSrc::W_ERROR;
}
int zone_id = transaction.getData()->get("zone_id")->intValue();
RdataIteratorPtr rdp = rrset->getRdataIterator();
rdp->first();
- DataSrc::TransactionResult result = DataSrc::T_SUCCESS;
+ DataSrc::WriteResult result = DataSrc::W_SUCCESS;
do {
- result = addRR(zone_id, rrset->getName(), rrset->getType(), rrset->getTTL(), rdp->getCurrent());
- if (result != DataSrc::T_SUCCESS) {
+ result = addRR(zone_id, rrset->getName(), rrset->getType(),
+ rrset->getTTL(), rdp->getCurrent());
+ if (result != DataSrc::W_SUCCESS) {
return result;
} else {
rdp->next();
@@ -932,7 +929,7 @@
return result;
}
-DataSrc::TransactionResult
+DataSrc::WriteResult
Sqlite3DataSrc::delRR(int zone_id,
const isc::dns::Name& name,
const isc::dns::RRType& rrtype)
@@ -956,7 +953,6 @@
}
if (rrtype == RRType::ANY()) {
- std::cout << "[XX] rrtype any" << std::endl;
rc = sqlite3_bind_text(query, 3, "%", -1,
SQLITE_STATIC);
} else {
@@ -975,7 +971,6 @@
" to SQL statement (query)");
}
- std::cout << "[XX] query prepared, executing" << std::endl;
int result = sqlite3_step(query);
int deleted_rows = sqlite3_total_changes(dbparameters->db_);
@@ -983,19 +978,16 @@
if (result == SQLITE_DONE) {
if (deleted_rows > 0) {
- return DataSrc::T_SUCCESS;
+ return DataSrc::W_SUCCESS;
} else {
- return DataSrc::T_NO_SUCH_DATA;
- }
- } else {
- std::cout << "[XX] sqlite3 del_rr error: " << result << std::endl;;
- std::cout << "[XX] " << sqlite3_errmsg(dbparameters->db_) << std::endl;
-
- return DataSrc::T_DB_ERROR;
- }
-}
-
-DataSrc::TransactionResult
+ return DataSrc::W_NO_SUCH_DATA;
+ }
+ } else {
+ return DataSrc::W_DB_ERROR;
+ }
+}
+
+DataSrc::WriteResult
Sqlite3DataSrc::delRR(int zone_id,
const isc::dns::Name& name,
const isc::dns::RRType& rrtype,
@@ -1033,7 +1025,6 @@
rdata.toText() << " to SQL statement (query)");
}
- std::cout << "[XX] query prepared, executing" << std::endl;
int result = sqlite3_step(query);
int deleted_rows = sqlite3_total_changes(dbparameters->db_);
@@ -1041,19 +1032,16 @@
if (result == SQLITE_DONE) {
if (deleted_rows > 0) {
- return DataSrc::T_SUCCESS;
+ return DataSrc::W_SUCCESS;
} else {
- return DataSrc::T_NO_SUCH_DATA;
- }
- } else {
- std::cout << "[XX] sqlite3 add_rr error: " << result << std::endl;;
- std::cout << "[XX] " << sqlite3_errmsg(dbparameters->db_) << std::endl;
-
- return DataSrc::T_DB_ERROR;
- }
-}
-
-DataSrc::TransactionResult
+ return DataSrc::W_NO_SUCH_DATA;
+ }
+ } else {
+ return DataSrc::W_DB_ERROR;
+ }
+}
+
+DataSrc::WriteResult
Sqlite3DataSrc::delAll(int zone_id)
{
sqlite3_stmt* query = dbparameters->w_del_all_;
@@ -1068,57 +1056,53 @@
" to SQL statement (query)");
}
- std::cout << "[XX] query prepared, executing" << std::endl;
int result = sqlite3_step(query);
sqlite3_reset(query);
if (result == SQLITE_DONE) {
- return DataSrc::T_SUCCESS;
- } else {
- std::cout << "[XX] sqlite3 add_rr error: " << result << std::endl;;
- std::cout << "[XX] " << sqlite3_errmsg(dbparameters->db_) << std::endl;
-
- return DataSrc::T_DB_ERROR;
- }
-}
-
-DataSrc::TransactionResult
+ return DataSrc::W_SUCCESS;
+ } else {
+ return DataSrc::W_DB_ERROR;
+ }
+}
+
+DataSrc::WriteResult
Sqlite3DataSrc::replaceZone(DataSrcTransaction& transaction,
const isc::dns::RRsetList& rrsets)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::T_ERROR;
+ return DataSrc::W_ERROR;
}
int zone_id = transaction.getData()->get("zone_id")->intValue();
- DataSrc::TransactionResult result = delAll(zone_id);
- if (result != DataSrc::T_SUCCESS) {
+ DataSrc::WriteResult result = delAll(zone_id);
+ if (result != DataSrc::W_SUCCESS) {
return result;
}
RRsetList::const_iterator it = rrsets.begin();
while (it != rrsets.end()) {
result = addRRset(transaction, *it);
- if (result != DataSrc::T_SUCCESS) {
+ if (result != DataSrc::W_SUCCESS) {
return result;
}
}
- return DataSrc::T_SUCCESS;
-}
-
-DataSrc::TransactionResult
+ return DataSrc::W_SUCCESS;
+}
+
+DataSrc::WriteResult
Sqlite3DataSrc::delZone(DataSrcTransaction& transaction)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::T_ERROR;
+ return DataSrc::W_ERROR;
}
int zone_id = transaction.getData()->get("zone_id")->intValue();
- DataSrc::TransactionResult result = delAll(zone_id);
- if (result != DataSrc::T_SUCCESS) {
+ DataSrc::WriteResult result = delAll(zone_id);
+ if (result != DataSrc::W_SUCCESS) {
return result;
}
@@ -1140,36 +1124,30 @@
sqlite3_reset(query);
if (q_result == SQLITE_DONE) {
- return DataSrc::T_SUCCESS;
- } else {
- std::cout << "[XX] sqlite3 del zone error: " << result << std::endl;;
- std::cout << "[XX] " << sqlite3_errmsg(dbparameters->db_) << std::endl;
-
- return DataSrc::T_DB_ERROR;
- }
-}
-
-DataSrc::TransactionResult
+ return DataSrc::W_SUCCESS;
+ } else {
+ return DataSrc::W_DB_ERROR;
+ }
+}
+
+DataSrc::WriteResult
Sqlite3DataSrc::delRRset(DataSrcTransaction& transaction,
isc::dns::ConstRRsetPtr rrset)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::T_ERROR;
- }
-
- std::cout << "[XX] delRR at sqlite3" << std::endl;
+ return DataSrc::W_ERROR;
+ }
+
int zone_id = transaction.getData()->get("zone_id")->intValue();
- std::cout << "[XX] zone id for: " << zone_id << std::endl;
-
- DataSrc::TransactionResult result = DataSrc::T_SUCCESS;
+ DataSrc::WriteResult result = DataSrc::W_SUCCESS;
if (rrset->getRdataCount() > 0) {
RdataIteratorPtr rdp = rrset->getRdataIterator();
rdp->first();
do {
result = delRR(zone_id, rrset->getName(), rrset->getType(), rdp->getCurrent());
- if (result != DataSrc::T_SUCCESS) {
+ if (result != DataSrc::W_SUCCESS) {
return result;
} else {
rdp->next();
Modified: branches/trac232/src/lib/datasrc/sqlite3_datasrc.h
==============================================================================
--- branches/trac232/src/lib/datasrc/sqlite3_datasrc.h (original)
+++ branches/trac232/src/lib/datasrc/sqlite3_datasrc.h Thu Sep 9 14:06:43 2010
@@ -107,32 +107,32 @@
// write access
- TransactionResult startTransaction(DataSrcTransaction& transaction);
- TransactionResult commitTransaction(DataSrcTransaction& transaction);
- TransactionResult rollbackTransaction(DataSrcTransaction& transaction);
+ WriteResult startTransaction(DataSrcTransaction& transaction);
+ WriteResult commitTransaction(DataSrcTransaction& transaction);
+ WriteResult rollbackTransaction(DataSrcTransaction& transaction);
- TransactionResult addRRset(DataSrcTransaction& transaction,
+ WriteResult addRRset(DataSrcTransaction& transaction,
isc::dns::ConstRRsetPtr rrset);
- TransactionResult delRRset(DataSrcTransaction& transaction,
+ WriteResult delRRset(DataSrcTransaction& transaction,
isc::dns::ConstRRsetPtr rrset);
- TransactionResult replaceZone(DataSrcTransaction& transaction,
+ WriteResult replaceZone(DataSrcTransaction& transaction,
const isc::dns::RRsetList& rrset_list);
- TransactionResult delZone(DataSrcTransaction& transaction);
+ WriteResult delZone(DataSrcTransaction& transaction);
private:
- DataSrc::TransactionResult addRR(int zone_id,
+ DataSrc::WriteResult addRR(int zone_id,
const isc::dns::Name& name,
const isc::dns::RRType& rrtype,
const isc::dns::RRTTL& rrttl,
const isc::dns::rdata::Rdata& rdata);
- DataSrc::TransactionResult delRR(int zone_id,
+ DataSrc::WriteResult delRR(int zone_id,
const isc::dns::Name& name,
const isc::dns::RRType& rrtype);
- DataSrc::TransactionResult delRR(int zone_id,
+ DataSrc::WriteResult delRR(int zone_id,
const isc::dns::Name& name,
const isc::dns::RRType& rrtype,
const isc::dns::rdata::Rdata& rdata);
- DataSrc::TransactionResult delAll(int zone_id);
+ DataSrc::WriteResult delAll(int zone_id);
private:
enum Mode {
Modified: branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc (original)
+++ branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc Thu Sep 9 14:06:43 2010
@@ -974,43 +974,43 @@
EXPECT_EQ(DataSrcTransaction::INIT, transaction.getState());
// start doing things without calling startTransaction()
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.commitTransaction(transaction));
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.rollbackTransaction(transaction));
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.addRRset(transaction, new_rrset));
RRsetIterator rrset_it = RRsetIterator();
RRsetList empty_list;
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.replaceZone(transaction, empty_list));
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.delZone(transaction));
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.delRRset(transaction, new_rrset));
// need rrsetit for doIXFR (but doIXFR should probably be moved up to datasource itself)
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.startTransaction(transaction));
EXPECT_EQ(DataSrcTransaction::RUNNING, transaction.getState());
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.startTransaction(transaction));
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.rollbackTransaction(transaction));
EXPECT_EQ(DataSrcTransaction::DONE, transaction.getState());
// state now 'done', everything should error again
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.commitTransaction(transaction));
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.rollbackTransaction(transaction));
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.addRRset(transaction, new_rrset));
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.replaceZone(transaction, empty_list));
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.delZone(transaction));
- EXPECT_EQ(DataSrc::T_ERROR,
+ EXPECT_EQ(DataSrc::W_ERROR,
data_source.delRRset(transaction, new_rrset));
}
@@ -1028,11 +1028,11 @@
// add it, but roll back
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.startTransaction(transaction1));
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.addRRset(transaction1, new_rrset));
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.rollbackTransaction(transaction1));
// check whether our new record does not exist
@@ -1043,11 +1043,11 @@
// add it with commit
DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.startTransaction(transaction2));
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.addRRset(transaction2, new_rrset));
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.commitTransaction(transaction2));
// now check whether it does exist
@@ -1073,11 +1073,11 @@
// add it, but roll back
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.startTransaction(transaction1));
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.delRRset(transaction1, new_rrset));
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.rollbackTransaction(transaction1));
// check whether our new record still exists
@@ -1089,11 +1089,11 @@
// add it, and commit
DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.startTransaction(transaction2));
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.delRRset(transaction2, new_rrset));
- EXPECT_EQ(DataSrc::T_SUCCESS,
+ EXPECT_EQ(DataSrc::W_SUCCESS,
data_source.commitTransaction(transaction2));
// now check whether it does not exist now
@@ -1122,9 +1122,9 @@
// Replace them, roll back
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.replaceZone(transaction1, empty_list));
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.rollbackTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.replaceZone(transaction1, empty_list));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.rollbackTransaction(transaction1));
// check whether it still exists
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1135,9 +1135,9 @@
// Replace them, commit
DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction2));
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.replaceZone(transaction2, empty_list));
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.commitTransaction(transaction2));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction2));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.replaceZone(transaction2, empty_list));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.commitTransaction(transaction2));
// check whether it's gone now
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1165,9 +1165,9 @@
// Delete zone, roll back
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.delZone(transaction1));
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.rollbackTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.delZone(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.rollbackTransaction(transaction1));
// check whether it still exists
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1178,9 +1178,9 @@
// Delete zone, commit
DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction2));
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.delZone(transaction2));
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.commitTransaction(transaction2));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction2));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.delZone(transaction2));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.commitTransaction(transaction2));
// check whether it's gone now
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1191,7 +1191,7 @@
// try to start a transaction for the zone that is now gone
DataSrcTransaction transaction3(&data_source, zone_name, RRClass::IN());
- EXPECT_EQ(DataSrc::T_NO_SUCH_ZONE, data_source.startTransaction(transaction3));
+ EXPECT_EQ(DataSrc::W_NO_SUCH_ZONE, data_source.startTransaction(transaction3));
}
@@ -1420,13 +1420,13 @@
// do IXFR, roll back
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction1));
EXPECT_EQ(DataSrc::SUCCESS,
data_source.doIXFR(transaction1,
ixfr_msg.beginSection(Section::ANSWER()),
ixfr_msg.endSection(Section::ANSWER()))
);
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.rollbackTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.rollbackTransaction(transaction1));
checkSingleRRset(data_source,
"www.example.com. 3600 IN A 192.0.2.1\n",
@@ -1434,13 +1434,13 @@
// do IXFR, commit
DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction2));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction2));
EXPECT_EQ(DataSrc::SUCCESS,
data_source.doIXFR(transaction2,
ixfr_msg.beginSection(Section::ANSWER()),
ixfr_msg.endSection(Section::ANSWER()))
);
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.commitTransaction(transaction2));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.commitTransaction(transaction2));
checkSingleRRset(data_source,
"www.example.com. 3600 IN A 192.0.2.3\n",
@@ -1448,13 +1448,13 @@
// same IXFR should now fail, because the start serial doesn't match
DataSrcTransaction transaction3(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction3));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction3));
EXPECT_EQ(DataSrc::ERROR,
data_source.doIXFR(transaction3,
ixfr_msg.beginSection(Section::ANSWER()),
ixfr_msg.endSection(Section::ANSWER()))
);
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.rollbackTransaction(transaction3));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.rollbackTransaction(transaction3));
}
TEST_F(Sqlite3DataSourceTest, ixfr_bad) {
@@ -1470,13 +1470,13 @@
ASSERT_EQ(0, ixfrFromFile(ixfr_msg, TEST_DATA_DIR
"/ixfr_bad_remove_nonexisting.rrs"));
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction1));
EXPECT_EQ(DataSrc::ERROR,
data_source.doIXFR(transaction1,
ixfr_msg.beginSection(Section::ANSWER()),
ixfr_msg.endSection(Section::ANSWER()))
);
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.rollbackTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.rollbackTransaction(transaction1));
}
@@ -1491,7 +1491,7 @@
Message update_msg(Message::RENDER);
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction1));
update_msg.setQid(1234);
// bad qtype
@@ -1539,7 +1539,7 @@
ASSERT_EQ(0, updateFromFile(update_msg, TEST_DATA_DIR "/update1.packet"));
ASSERT_EQ(DataSrc::SUCCESS, data_source.doUpdate(transaction1, update_msg));
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.commitTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.commitTransaction(transaction1));
checkSingleRRset(data_source,
"",
Name("ip46.example.com"), RRClass::IN(), RRType::A());
@@ -1573,7 +1573,7 @@
Message update_msg(Message::RENDER);
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::CH());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction1));
update_msg.setQid(1234);
update_msg.setOpcode(isc::dns::Opcode::UPDATE());
@@ -1594,7 +1594,7 @@
Message update_msg(Message::RENDER);
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction1));
ASSERT_EQ(0, updateFromFile(update_msg, TEST_DATA_DIR "/update2.packet"));
ASSERT_EQ(DataSrc::ERROR, data_source.doUpdate(transaction1, update_msg));
@@ -1629,7 +1629,7 @@
Message update_msg(Message::RENDER);
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction1));
ASSERT_EQ(0, updateFromFile(update_msg, TEST_DATA_DIR "/update7.packet"));
ASSERT_EQ(DataSrc::ERROR, data_source.doUpdate(transaction1, update_msg));
Modified: branches/trac232/src/lib/dns/python/rrclass_python.cc
==============================================================================
--- branches/trac232/src/lib/dns/python/rrclass_python.cc (original)
+++ branches/trac232/src/lib/dns/python/rrclass_python.cc Thu Sep 9 14:06:43 2010
@@ -165,7 +165,9 @@
// (the way to do exceptions is to set PyErr and return -1)
try {
if (PyArg_ParseTuple(args, "s", &s)) {
- self->rrclass = new RRClass(s);
+ std::cout << "[XX] CREATING RRCLASS '" << s << "'" << std::endl;
+ self->rrclass = new RRClass(s);
+ std::cout << "[XX] CREATED RRCLASS" << std::endl;
return (0);
} else if (PyArg_ParseTuple(args, "I", &i)) {
PyErr_Clear();
@@ -188,8 +190,9 @@
}
// Incomplete is never thrown, a type error would have already been raised
//when we try to read the 2 bytes above
- } catch (const InvalidRRClass& ic) {
+ } catch (const isc::Exception& ic) {
PyErr_Clear();
+ std::cout << "[XX] ERROR CREATING" << std::endl;
PyErr_SetString(po_InvalidRRClass, ic.what());
return (-1);
}
More information about the bind10-changes
mailing list