[svn] commit: r2596 - in /branches/trac232/src: bin/auth/auth_srv.cc lib/datasrc/data_source.cc lib/datasrc/data_source.h lib/datasrc/sqlite3_datasrc.cc lib/datasrc/sqlite3_datasrc.h lib/datasrc/tests/sqlite3_unittest.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Jul 22 15:50:57 UTC 2010
Author: jelte
Date: Thu Jul 22 15:50:57 2010
New Revision: 2596
Log:
transaction-specific return codes
Modified:
branches/trac232/src/bin/auth/auth_srv.cc
branches/trac232/src/lib/datasrc/data_source.cc
branches/trac232/src/lib/datasrc/data_source.h
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
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 Jul 22 15:50:57 2010
@@ -365,18 +365,18 @@
RdataPtr rdata = createRdata(rrset->getType(), rrset->getClass(), args->get("rr_rdata")->stringValue());
rrset->addRdata(rdata);
DataSrcTransaction transaction(datasource, zone_name, RRClass::IN());
- DataSrc::Result r = datasource->startTransaction(transaction);
- if (r != DataSrc::SUCCESS) {
+ 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::SUCCESS) {
+ if (r != DataSrc::T_SUCCESS) {
// log? rollback immediately?
}
r = datasource->commitTransaction(transaction);
std::cout << "[XX] RESULT rollback: " << r << std::endl;
- if (r == DataSrc::SUCCESS) {
+ if (r == DataSrc::T_SUCCESS) {
return isc::config::createAnswer();
} else {
return isc::config::createAnswer(r, "error");
@@ -415,18 +415,18 @@
}
}
DataSrcTransaction transaction(datasource, zone_name, RRClass::IN());
- DataSrc::Result r = datasource->startTransaction(transaction);
- if (r != DataSrc::SUCCESS) {
+ 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::SUCCESS) {
+ if (r != DataSrc::T_SUCCESS) {
// log? rollback immediately?
}
r = datasource->commitTransaction(transaction);
std::cout << "[XX] RESULT rollback: " << r << std::endl;
- if (r == DataSrc::SUCCESS) {
+ if (r == DataSrc::T_SUCCESS) {
return isc::config::createAnswer();
} else {
return isc::config::createAnswer(r, "error");
@@ -502,18 +502,18 @@
// hmz can't we assign RRTypes?
if (datasource) {
DataSrcTransaction transaction(datasource, zone_name, RRClass::IN());
- DataSrc::Result r = datasource->startTransaction(transaction);
- if (r != DataSrc::SUCCESS) {
+ 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::SUCCESS) {
+ if (r != DataSrc::T_SUCCESS) {
// log? rollback immediately?
}
r = datasource->commitTransaction(transaction);
std::cout << "[XX] RESULT rollback: " << r << std::endl;
- if (r == DataSrc::SUCCESS) {
+ if (r == DataSrc::T_SUCCESS) {
return isc::config::createAnswer();
} else {
return isc::config::createAnswer(r, "error");
@@ -589,15 +589,15 @@
DataSrc* datasource = const_cast<DataSrc*>(match.getDataSource());
if (datasource) {
DataSrcTransaction transaction(datasource, zone_name, RRClass::IN());
- DataSrc::Result result = datasource->startTransaction(transaction);
- if (result != DataSrc::SUCCESS) {
+ DataSrc::TransactionResult result = datasource->startTransaction(transaction);
+ if (result != DataSrc::T_SUCCESS) {
return isc::config::createAnswer(result, "error starting transaction");
}
- result = datasource->doIXFR(transaction,
- m.beginSection(Section::ANSWER()),
- m.endSection(Section::ANSWER()));
- if (result != DataSrc::SUCCESS) {
+ 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);
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 Jul 22 15:50:57 2010
@@ -1249,49 +1249,49 @@
return (NOT_IMPLEMENTED);
}
-DataSrc::Result
+DataSrc::TransactionResult
DataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
DataSrc::commitTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
DataSrc::rollbackTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
DataSrc::addRRset(DataSrcTransaction& transaction UNUSED_PARAM,
const isc::dns::ConstRRsetPtr rrset UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
DataSrc::delRRset(DataSrcTransaction& transaction UNUSED_PARAM,
isc::dns::ConstRRsetPtr rrset UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
DataSrc::delZone(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
DataSrc::replaceZone(DataSrcTransaction& transaction UNUSED_PARAM,
const RRsetList& UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
+ return (T_NOT_IMPLEMENTED);
}
static bool
@@ -1431,10 +1431,10 @@
return (Rcode::SERVFAIL());
} else {
// TODO: no serial arithmetic yet?
- if (delRRset(transaction, *(soa_list.begin())) != SUCCESS) {
+ if (delRRset(transaction, *(soa_list.begin())) != T_SUCCESS) {
return (Rcode::SERVFAIL());
}
- if (addRRset(transaction, update) != SUCCESS) {
+ if (addRRset(transaction, update) != T_SUCCESS) {
return (Rcode::SERVFAIL());
}
}
@@ -1444,11 +1444,11 @@
} else {
if (update->getClass() == RRClass::ANY() ||
update->getClass() == RRClass::NONE()) {
- if (delRRset(transaction, update) != SUCCESS) {
+ if (delRRset(transaction, update) != T_SUCCESS) {
return (Rcode::SERVFAIL());
}
} else {
- if (addRRset(transaction, update) != SUCCESS) {
+ if (addRRset(transaction, update) != T_SUCCESS) {
return (Rcode::SERVFAIL());
}
}
@@ -1652,50 +1652,51 @@
}
}
-DataSrc::Result
+DataSrc::TransactionResult
MetaDataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
MetaDataSrc::commitTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
MetaDataSrc::rollbackTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
MetaDataSrc::addRRset(DataSrcTransaction& transaction UNUSED_PARAM,
isc::dns::ConstRRsetPtr rrset UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
MetaDataSrc::delRRset(DataSrcTransaction& transaction UNUSED_PARAM,
isc::dns::ConstRRsetPtr rrset UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
MetaDataSrc::delZone(DataSrcTransaction& transaction UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-DataSrc::Result
+ return (T_NOT_IMPLEMENTED);
+}
+
+DataSrc::TransactionResult
MetaDataSrc::replaceZone(DataSrcTransaction& transaction UNUSED_PARAM,
const isc::dns::RRsetList& rrset_list UNUSED_PARAM)
{
- return (NOT_IMPLEMENTED);
-}
-
-}
-}
+ return (T_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 Jul 22 15:50:57 2010
@@ -82,6 +82,15 @@
SUCCESS,
ERROR,
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
};
// These flags indicate conditions encountered while processing a query.
@@ -271,13 +280,13 @@
// For datasource that support writing, overwrite these
// methods. By default they will return NOT_IMPLEMENTED.
- virtual Result addRRset(DataSrcTransaction& transaction,
- isc::dns::ConstRRsetPtr rrset);
- virtual Result delRRset(DataSrcTransaction& transaction,
- isc::dns::ConstRRsetPtr rrset);
- virtual Result delZone(DataSrcTransaction& transaction);
- virtual Result replaceZone(DataSrcTransaction& transaction,
- const isc::dns::RRsetList& rrsets);
+ virtual TransactionResult addRRset(DataSrcTransaction& transaction,
+ isc::dns::ConstRRsetPtr rrset);
+ virtual TransactionResult delRRset(DataSrcTransaction& transaction,
+ isc::dns::ConstRRsetPtr rrset);
+ virtual TransactionResult delZone(DataSrcTransaction& transaction);
+ virtual TransactionResult replaceZone(DataSrcTransaction& transaction,
+ const isc::dns::RRsetList& rrsets);
// The following methods are used by the 'high-level' ones below
//
@@ -292,9 +301,9 @@
// General High-level functions. If your data source can make use
// of backend-specific shortcuts, you can overwrite these methods
- virtual Result startTransaction(DataSrcTransaction& transaction);
- virtual Result commitTransaction(DataSrcTransaction& transaction);
- virtual Result rollbackTransaction(DataSrcTransaction& transaction);
+ virtual TransactionResult startTransaction(DataSrcTransaction& transaction);
+ virtual TransactionResult commitTransaction(DataSrcTransaction& transaction);
+ virtual TransactionResult rollbackTransaction(DataSrcTransaction& transaction);
virtual Result doIXFR(DataSrcTransaction& transaction,
const isc::dns::RRsetIterator start,
const isc::dns::RRsetIterator end);
@@ -373,17 +382,17 @@
// Writable data sources
//
// see comments at DataSrc
- virtual Result startTransaction(DataSrcTransaction& transaction);
- virtual Result commitTransaction(DataSrcTransaction& transaction);
- virtual Result rollbackTransaction(DataSrcTransaction& transaction);
+ virtual TransactionResult startTransaction(DataSrcTransaction& transaction);
+ virtual TransactionResult commitTransaction(DataSrcTransaction& transaction);
+ virtual TransactionResult rollbackTransaction(DataSrcTransaction& transaction);
- virtual Result addRRset(DataSrcTransaction& transaction,
- isc::dns::ConstRRsetPtr rrset);
- virtual Result delRRset(DataSrcTransaction& transaction,
- isc::dns::ConstRRsetPtr rrset);
- virtual Result delZone(DataSrcTransaction& transaction);
- virtual Result replaceZone(DataSrcTransaction& transaction,
- const isc::dns::RRsetList& rrsets);
+ virtual TransactionResult addRRset(DataSrcTransaction& transaction,
+ isc::dns::ConstRRsetPtr rrset);
+ virtual TransactionResult delRRset(DataSrcTransaction& transaction,
+ isc::dns::ConstRRsetPtr rrset);
+ virtual TransactionResult delZone(DataSrcTransaction& transaction);
+ virtual TransactionResult replaceZone(DataSrcTransaction& transaction,
+ const isc::dns::RRsetList& rrsets);
// end of writable data sources part
private:
std::vector<ConstDataSrcPtr> data_sources;
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 Jul 22 15:50:57 2010
@@ -774,63 +774,63 @@
return (SUCCESS);
}
-DataSrc::Result
+DataSrc::TransactionResult
Sqlite3DataSrc::startTransaction(DataSrcTransaction& transaction)
{
if (transaction.getState() != DataSrcTransaction::INIT) {
- return DataSrc::ERROR;
+ return DataSrc::T_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::ERROR;
+ return DataSrc::T_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::SUCCESS;
- } else {
- return DataSrc::ERROR;
- }
-}
-
-DataSrc::Result
+ return DataSrc::T_SUCCESS;
+ } else {
+ return DataSrc::T_DB_ERROR;
+ }
+}
+
+DataSrc::TransactionResult
Sqlite3DataSrc::commitTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::ERROR;
+ return DataSrc::T_ERROR;
}
int result = sqlite3_exec(dbparameters->db_, w_commit_transaction_str, NULL, NULL, NULL);
if (result == SQLITE_OK) {
transaction.setState(DataSrcTransaction::DONE);
- return DataSrc::SUCCESS;
- } else {
- return DataSrc::ERROR;
- }
-}
-
-DataSrc::Result
+ return DataSrc::T_SUCCESS;
+ } else {
+ return DataSrc::T_DB_ERROR;
+ }
+}
+
+DataSrc::TransactionResult
Sqlite3DataSrc::rollbackTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::ERROR;
+ return DataSrc::T_ERROR;
}
int result = sqlite3_exec(dbparameters->db_, w_rollback_transaction_str, NULL, NULL, NULL);
if (result == SQLITE_OK) {
transaction.setState(DataSrcTransaction::DONE);
- return DataSrc::SUCCESS;
- } else {
- return DataSrc::ERROR;
- }
-}
-
-
-DataSrc::Result
+ return DataSrc::T_SUCCESS;
+ } else {
+ return DataSrc::T_DB_ERROR;
+ }
+}
+
+
+DataSrc::TransactionResult
Sqlite3DataSrc::addRR(int zone_id,
const isc::dns::Name& name,
const isc::dns::RRType& rrtype,
@@ -892,22 +892,22 @@
sqlite3_reset(query);
if (result == SQLITE_DONE) {
- return DataSrc::SUCCESS;
+ 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::ERROR;
- }
-
-}
-
-DataSrc::Result
+ return DataSrc::T_DB_ERROR;
+ }
+
+}
+
+DataSrc::TransactionResult
Sqlite3DataSrc::addRRset(DataSrcTransaction& transaction,
isc::dns::ConstRRsetPtr rrset)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::ERROR;
+ return DataSrc::T_ERROR;
}
std::cout << "[XX] addRR at sqlite3" << std::endl;
int zone_id = transaction.getData()->get("zone_id")->intValue();
@@ -917,10 +917,10 @@
rdp->first();
std::cout << "[XX] RDATA: " << rdp->getCurrent().toText() << std::endl;
std::cout << "[XX] RDATA: " << rdp->getCurrent().toText().c_str() << std::endl;
- DataSrc::Result result = DataSrc::SUCCESS;
+ DataSrc::TransactionResult result = DataSrc::T_SUCCESS;
do {
result = addRR(zone_id, rrset->getName(), rrset->getType(), rrset->getTTL(), rdp->getCurrent());
- if (result != DataSrc::SUCCESS) {
+ if (result != DataSrc::T_SUCCESS) {
return result;
} else {
rdp->next();
@@ -929,7 +929,7 @@
return result;
}
-DataSrc::Result
+DataSrc::TransactionResult
Sqlite3DataSrc::delRR(int zone_id,
const isc::dns::Name& name,
const isc::dns::RRType& rrtype)
@@ -980,19 +980,19 @@
if (result == SQLITE_DONE) {
if (deleted_rows > 0) {
- return DataSrc::SUCCESS;
+ return DataSrc::T_SUCCESS;
} else {
- return DataSrc::ERROR;
+ 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::ERROR;
- }
-}
-
-DataSrc::Result
+ return DataSrc::T_DB_ERROR;
+ }
+}
+
+DataSrc::TransactionResult
Sqlite3DataSrc::delRR(int zone_id,
const isc::dns::Name& name,
const isc::dns::RRType& rrtype,
@@ -1032,20 +1032,25 @@
std::cout << "[XX] query prepared, executing" << std::endl;
int result = sqlite3_step(query);
+ int deleted_rows = sqlite3_total_changes(dbparameters->db_);
sqlite3_reset(query);
if (result == SQLITE_DONE) {
- return DataSrc::SUCCESS;
+ if (deleted_rows > 0) {
+ return DataSrc::T_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::ERROR;
- }
-}
-
-DataSrc::Result
+ return DataSrc::T_DB_ERROR;
+ }
+}
+
+DataSrc::TransactionResult
Sqlite3DataSrc::delAll(int zone_id)
{
sqlite3_stmt* query = dbparameters->w_del_all_;
@@ -1066,51 +1071,51 @@
sqlite3_reset(query);
if (result == SQLITE_DONE) {
- return DataSrc::SUCCESS;
+ 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::ERROR;
- }
-}
-
-DataSrc::Result
+ return DataSrc::T_DB_ERROR;
+ }
+}
+
+DataSrc::TransactionResult
Sqlite3DataSrc::replaceZone(DataSrcTransaction& transaction,
const isc::dns::RRsetList& rrsets)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::ERROR;
+ return DataSrc::T_ERROR;
}
int zone_id = transaction.getData()->get("zone_id")->intValue();
- DataSrc::Result result = delAll(zone_id);
- if (result != DataSrc::SUCCESS) {
+ DataSrc::TransactionResult result = delAll(zone_id);
+ if (result != DataSrc::T_SUCCESS) {
return result;
}
RRsetList::const_iterator it = rrsets.begin();
while (it != rrsets.end()) {
result = addRRset(transaction, *it);
- if (result != DataSrc::SUCCESS) {
+ if (result != DataSrc::T_SUCCESS) {
return result;
}
}
- return DataSrc::SUCCESS;
-}
-
-DataSrc::Result
+ return DataSrc::T_SUCCESS;
+}
+
+DataSrc::TransactionResult
Sqlite3DataSrc::delZone(DataSrcTransaction& transaction)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::ERROR;
+ return DataSrc::T_ERROR;
}
int zone_id = transaction.getData()->get("zone_id")->intValue();
- DataSrc::Result result = delAll(zone_id);
- if (result != DataSrc::SUCCESS) {
+ DataSrc::TransactionResult result = delAll(zone_id);
+ if (result != DataSrc::T_SUCCESS) {
return result;
}
@@ -1132,21 +1137,21 @@
sqlite3_reset(query);
if (q_result == SQLITE_DONE) {
- return DataSrc::SUCCESS;
+ 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::ERROR;
- }
-}
-
-DataSrc::Result
+ return DataSrc::T_DB_ERROR;
+ }
+}
+
+DataSrc::TransactionResult
Sqlite3DataSrc::delRRset(DataSrcTransaction& transaction,
isc::dns::ConstRRsetPtr rrset)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::ERROR;
+ return DataSrc::T_ERROR;
}
std::cout << "[XX] delRR at sqlite3" << std::endl;
@@ -1154,7 +1159,7 @@
std::cout << "[XX] zone id for: " << zone_id << std::endl;
- DataSrc::Result result = DataSrc::SUCCESS;
+ DataSrc::TransactionResult result = DataSrc::T_SUCCESS;
if (rrset->getRdataCount() > 0) {
RdataIteratorPtr rdp = rrset->getRdataIterator();
@@ -1163,7 +1168,7 @@
std::cout << "[XX] RDATA: " << rdp->getCurrent().toText().c_str() << std::endl;
do {
result = delRR(zone_id, rrset->getName(), rrset->getType(), rdp->getCurrent());
- if (result != DataSrc::SUCCESS) {
+ if (result != DataSrc::T_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 Jul 22 15:50:57 2010
@@ -107,35 +107,32 @@
// write access
- // hmz, should we have a transaction context object? (see comments
- // in datasource.h
- Result startTransaction(DataSrcTransaction& transaction);
- Result commitTransaction(DataSrcTransaction& transaction);
- Result rollbackTransaction(DataSrcTransaction& transaction);
+ TransactionResult startTransaction(DataSrcTransaction& transaction);
+ TransactionResult commitTransaction(DataSrcTransaction& transaction);
+ TransactionResult rollbackTransaction(DataSrcTransaction& transaction);
- //DataSrc::Result addRRset(const isc::dns::Name& zonename, const isc::dns::RRset& rrset);
- DataSrc::Result addRRset(DataSrcTransaction& transaction,
- isc::dns::ConstRRsetPtr rrset);
- DataSrc::Result delRRset(DataSrcTransaction& transaction,
- isc::dns::ConstRRsetPtr rrset);
- DataSrc::Result replaceZone(DataSrcTransaction& transaction,
- const isc::dns::RRsetList& rrset_list);
- DataSrc::Result delZone(DataSrcTransaction& transaction);
+ TransactionResult addRRset(DataSrcTransaction& transaction,
+ isc::dns::ConstRRsetPtr rrset);
+ TransactionResult delRRset(DataSrcTransaction& transaction,
+ isc::dns::ConstRRsetPtr rrset);
+ TransactionResult replaceZone(DataSrcTransaction& transaction,
+ const isc::dns::RRsetList& rrset_list);
+ TransactionResult delZone(DataSrcTransaction& transaction);
private:
- DataSrc::Result addRR(int zone_id,
+ DataSrc::TransactionResult 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::Result delRR(int zone_id,
- const isc::dns::Name& name,
- const isc::dns::RRType& rrtype);
- DataSrc::Result delRR(int zone_id,
- const isc::dns::Name& name,
- const isc::dns::RRType& rrtype,
- const isc::dns::rdata::Rdata& rdata);
- DataSrc::Result delAll(int zone_id);
+ DataSrc::TransactionResult delRR(int zone_id,
+ const isc::dns::Name& name,
+ const isc::dns::RRType& rrtype);
+ DataSrc::TransactionResult 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);
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 Jul 22 15:50:57 2010
@@ -974,43 +974,43 @@
EXPECT_EQ(DataSrcTransaction::INIT, transaction.getState());
// start doing things without calling startTransaction()
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.commitTransaction(transaction));
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.rollbackTransaction(transaction));
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.addRRset(transaction, new_rrset));
RRsetIterator rrset_it = RRsetIterator();
RRsetList empty_list;
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.replaceZone(transaction, empty_list));
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.delZone(transaction));
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.delRRset(transaction, new_rrset));
// need rrsetit for doIXFR (but doIXFR should probably be moved up to datasource itself)
- EXPECT_EQ(DataSrc::SUCCESS,
+ EXPECT_EQ(DataSrc::T_SUCCESS,
data_source.startTransaction(transaction));
EXPECT_EQ(DataSrcTransaction::RUNNING, transaction.getState());
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.startTransaction(transaction));
- EXPECT_EQ(DataSrc::SUCCESS,
+ EXPECT_EQ(DataSrc::T_SUCCESS,
data_source.rollbackTransaction(transaction));
EXPECT_EQ(DataSrcTransaction::DONE, transaction.getState());
// state now 'done', everything should error again
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.commitTransaction(transaction));
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.rollbackTransaction(transaction));
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.addRRset(transaction, new_rrset));
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.replaceZone(transaction, empty_list));
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_ERROR,
data_source.delZone(transaction));
- EXPECT_EQ(DataSrc::ERROR,
+ EXPECT_EQ(DataSrc::T_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::SUCCESS,
+ EXPECT_EQ(DataSrc::T_SUCCESS,
data_source.startTransaction(transaction1));
- EXPECT_EQ(DataSrc::SUCCESS,
+ EXPECT_EQ(DataSrc::T_SUCCESS,
data_source.addRRset(transaction1, new_rrset));
- EXPECT_EQ(DataSrc::SUCCESS,
+ EXPECT_EQ(DataSrc::T_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::SUCCESS,
+ EXPECT_EQ(DataSrc::T_SUCCESS,
data_source.startTransaction(transaction2));
- EXPECT_EQ(DataSrc::SUCCESS,
+ EXPECT_EQ(DataSrc::T_SUCCESS,
data_source.addRRset(transaction2, new_rrset));
- EXPECT_EQ(DataSrc::SUCCESS,
+ EXPECT_EQ(DataSrc::T_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::SUCCESS,
+ EXPECT_EQ(DataSrc::T_SUCCESS,
data_source.startTransaction(transaction1));
- EXPECT_EQ(DataSrc::SUCCESS,
+ EXPECT_EQ(DataSrc::T_SUCCESS,
data_source.delRRset(transaction1, new_rrset));
- EXPECT_EQ(DataSrc::SUCCESS,
+ EXPECT_EQ(DataSrc::T_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::SUCCESS,
+ EXPECT_EQ(DataSrc::T_SUCCESS,
data_source.startTransaction(transaction2));
- EXPECT_EQ(DataSrc::SUCCESS,
+ EXPECT_EQ(DataSrc::T_SUCCESS,
data_source.delRRset(transaction2, new_rrset));
- EXPECT_EQ(DataSrc::SUCCESS,
+ EXPECT_EQ(DataSrc::T_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());
- data_source.startTransaction(transaction1);
- data_source.replaceZone(transaction1, empty_list);
- data_source.rollbackTransaction(transaction1);
+ 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));
// check whether it still exists
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1135,9 +1135,9 @@
// Replace them, commit
DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
- data_source.startTransaction(transaction2);
- data_source.replaceZone(transaction2, empty_list);
- data_source.commitTransaction(transaction2);
+ 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));
// 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());
- data_source.startTransaction(transaction1);
- data_source.delZone(transaction1);
- data_source.rollbackTransaction(transaction1);
+ 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));
// check whether it still exists
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1178,9 +1178,9 @@
// Delete zone, commit
DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
- data_source.startTransaction(transaction2);
- data_source.delZone(transaction2);
- data_source.commitTransaction(transaction2);
+ 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));
// 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::ERROR, data_source.startTransaction(transaction3));
+ EXPECT_EQ(DataSrc::T_NO_SUCH_ZONE, data_source.startTransaction(transaction3));
}
@@ -1420,13 +1420,13 @@
// do IXFR, roll back
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- data_source.startTransaction(transaction1);
+ ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
EXPECT_EQ(DataSrc::SUCCESS,
data_source.doIXFR(transaction1,
ixfr_msg.beginSection(Section::ANSWER()),
ixfr_msg.endSection(Section::ANSWER()))
);
- data_source.rollbackTransaction(transaction1);
+ ASSERT_EQ(DataSrc::T_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());
- data_source.startTransaction(transaction2);
+ ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction2));
EXPECT_EQ(DataSrc::SUCCESS,
data_source.doIXFR(transaction2,
ixfr_msg.beginSection(Section::ANSWER()),
ixfr_msg.endSection(Section::ANSWER()))
);
- data_source.commitTransaction(transaction2);
+ ASSERT_EQ(DataSrc::T_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());
- data_source.startTransaction(transaction3);
+ ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction3));
EXPECT_EQ(DataSrc::ERROR,
data_source.doIXFR(transaction3,
ixfr_msg.beginSection(Section::ANSWER()),
ixfr_msg.endSection(Section::ANSWER()))
);
- data_source.rollbackTransaction(transaction3);
+ ASSERT_EQ(DataSrc::T_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());
- data_source.startTransaction(transaction1);
+ ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
EXPECT_EQ(DataSrc::ERROR,
data_source.doIXFR(transaction1,
ixfr_msg.beginSection(Section::ANSWER()),
ixfr_msg.endSection(Section::ANSWER()))
);
- data_source.rollbackTransaction(transaction1);
+ ASSERT_EQ(DataSrc::T_SUCCESS, data_source.rollbackTransaction(transaction1));
}
@@ -1491,7 +1491,7 @@
Message update_msg(Message::RENDER);
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- data_source.startTransaction(transaction1);
+ ASSERT_EQ(DataSrc::T_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));
- data_source.commitTransaction(transaction1);
+ ASSERT_EQ(DataSrc::T_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());
- data_source.startTransaction(transaction1);
+ ASSERT_EQ(DataSrc::T_SUCCESS, data_source.startTransaction(transaction1));
update_msg.setQid(1234);
update_msg.setOpcode(isc::dns::Opcode::UPDATE());
@@ -1594,14 +1594,11 @@
Message update_msg(Message::RENDER);
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- data_source.startTransaction(transaction1);
+ ASSERT_EQ(DataSrc::T_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));
ASSERT_EQ(Rcode::NXRRSET(), update_msg.getRcode());
-
- data_source.rollbackTransaction(transaction1);
- data_source.startTransaction(transaction1);
ASSERT_EQ(0, updateFromFile(update_msg, TEST_DATA_DIR "/update3.packet"));
ASSERT_EQ(DataSrc::ERROR, data_source.doUpdate(transaction1, update_msg));
@@ -1632,7 +1629,7 @@
Message update_msg(Message::RENDER);
DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- data_source.startTransaction(transaction1);
+ ASSERT_EQ(DataSrc::T_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));
More information about the bind10-changes
mailing list