[svn] commit: r3309 - in /branches/trac374/src/lib/datasrc: sqlite3_datasrc.cc tests/sqlite3_unittest.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Oct 21 15:04:29 UTC 2010
Author: jelte
Date: Thu Oct 21 15:04:28 2010
New Revision: 3309
Log:
added test for trying to replace a non-existent zone with create_zone set to false. And fixed one instance where it could go wrong in subsequent database actions
also fixed return statement style
Modified:
branches/trac374/src/lib/datasrc/sqlite3_datasrc.cc
branches/trac374/src/lib/datasrc/tests/sqlite3_unittest.cc
Modified: branches/trac374/src/lib/datasrc/sqlite3_datasrc.cc
==============================================================================
--- branches/trac374/src/lib/datasrc/sqlite3_datasrc.cc (original)
+++ branches/trac374/src/lib/datasrc/sqlite3_datasrc.cc Thu Oct 21 15:04:28 2010
@@ -791,30 +791,41 @@
Sqlite3DataSrc::startTransaction(DataSrcTransaction& transaction, bool new_zone)
{
if (transaction.getState() != DataSrcTransaction::INIT) {
- return DataSrc::W_ERROR;
- }
- int result = sqlite3_exec(dbparameters->db_, w_start_transaction_str, NULL, NULL, NULL);
+ 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) {
if (new_zone) {
DataSrc::WriteResult add_zone_res =
- addZone(transaction.getZoneName(), isc::dns::RRClass::IN());
+ addZone(transaction.getZoneName(),
+ isc::dns::RRClass::IN());
if (add_zone_res != DataSrc::W_SUCCESS) {
- return add_zone_res;
+ return (add_zone_res);
}
zone_id = hasExactZone(transaction.getZoneName().toText().c_str());
} else {
- return DataSrc::W_NO_SUCH_ZONE;
+ // roll back the transaction we started
+ result = sqlite3_exec(dbparameters->db_,
+ w_rollback_transaction_str,
+ NULL, NULL, NULL);
+ if (result == SQLITE_OK) {
+ return (DataSrc::W_NO_SUCH_ZONE);
+ } else {
+ return (DataSrc::W_DB_ERROR);
+ }
}
}
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::W_SUCCESS;
- } else {
- return DataSrc::W_DB_ERROR;
+ return (DataSrc::W_SUCCESS);
+ } else {
+ return (DataSrc::W_DB_ERROR);
}
}
@@ -822,16 +833,16 @@
Sqlite3DataSrc::commitTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::W_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::W_SUCCESS;
- } else {
- return DataSrc::W_DB_ERROR;
+ return (DataSrc::W_SUCCESS);
+ } else {
+ return (DataSrc::W_DB_ERROR);
}
}
@@ -839,15 +850,15 @@
Sqlite3DataSrc::rollbackTransaction(DataSrcTransaction& transaction)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::W_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::W_SUCCESS;
- } else {
- return DataSrc::W_DB_ERROR;
+ return (DataSrc::W_SUCCESS);
+ } else {
+ return (DataSrc::W_DB_ERROR);
}
}
@@ -880,9 +891,9 @@
sqlite3_reset(query);
if (result == SQLITE_DONE) {
- return DataSrc::W_SUCCESS;
- } else {
- return DataSrc::W_DB_ERROR;
+ return (DataSrc::W_SUCCESS);
+ } else {
+ return (DataSrc::W_DB_ERROR);
}
}
@@ -947,9 +958,9 @@
sqlite3_reset(query);
if (result == SQLITE_DONE) {
- return DataSrc::W_SUCCESS;
- } else {
- return DataSrc::W_DB_ERROR;
+ return (DataSrc::W_SUCCESS);
+ } else {
+ return (DataSrc::W_DB_ERROR);
}
}
@@ -959,10 +970,10 @@
isc::dns::ConstRRsetPtr rrset)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::W_ERROR;
+ return (DataSrc::W_ERROR);
}
if (rrset->getRdataCount() == 0) {
- return DataSrc::W_ERROR;
+ return (DataSrc::W_ERROR);
}
int zone_id = transaction.getData()->get("zone_id")->intValue();
RdataIteratorPtr rdp = rrset->getRdataIterator();
@@ -973,12 +984,12 @@
result = addRR(zone_id, rrset->getName(), rrset->getType(),
rrset->getTTL(), rdp->getCurrent());
if (result != DataSrc::W_SUCCESS) {
- return result;
+ return (result);
} else {
rdp->next();
}
} while (!rdp->isLast());
- return result;
+ return (result);
}
DataSrc::WriteResult
@@ -1030,12 +1041,12 @@
if (result == SQLITE_DONE) {
if (deleted_rows > 0) {
- return DataSrc::W_SUCCESS;
+ return (DataSrc::W_SUCCESS);
} else {
- return DataSrc::W_NO_SUCH_DATA;
- }
- } else {
- return DataSrc::W_DB_ERROR;
+ return (DataSrc::W_NO_SUCH_DATA);
+ }
+ } else {
+ return (DataSrc::W_DB_ERROR);
}
}
@@ -1084,12 +1095,12 @@
if (result == SQLITE_DONE) {
if (deleted_rows > 0) {
- return DataSrc::W_SUCCESS;
+ return (DataSrc::W_SUCCESS);
} else {
- return DataSrc::W_NO_SUCH_DATA;
- }
- } else {
- return DataSrc::W_DB_ERROR;
+ return (DataSrc::W_NO_SUCH_DATA);
+ }
+ } else {
+ return (DataSrc::W_DB_ERROR);
}
}
@@ -1113,9 +1124,9 @@
sqlite3_reset(query);
if (result == SQLITE_DONE) {
- return DataSrc::W_SUCCESS;
- } else {
- return DataSrc::W_DB_ERROR;
+ return (DataSrc::W_SUCCESS);
+ } else {
+ return (DataSrc::W_DB_ERROR);
}
}
@@ -1125,42 +1136,42 @@
void* arg1, void* arg2)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::W_ERROR;
+ return (DataSrc::W_ERROR);
}
int zone_id = transaction.getData()->get("zone_id")->intValue();
DataSrc::WriteResult result = delAll(zone_id);
if (result != DataSrc::W_SUCCESS) {
- return result;
+ return (result);
}
if (!nextRRset) {
- return DataSrc::W_SUCCESS;
+ return (DataSrc::W_SUCCESS);
}
RRsetPtr next_rrset = nextRRset(arg1, arg2);
while (next_rrset) {
result = addRRset(transaction, next_rrset);
if (result != DataSrc::W_SUCCESS) {
- return result;
+ return (result);
}
next_rrset = nextRRset(arg1, arg2);
}
- return DataSrc::W_SUCCESS;
+ return (DataSrc::W_SUCCESS);
}
DataSrc::WriteResult
Sqlite3DataSrc::delZone(DataSrcTransaction& transaction)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::W_ERROR;
+ return (DataSrc::W_ERROR);
}
int zone_id = transaction.getData()->get("zone_id")->intValue();
DataSrc::WriteResult result = delAll(zone_id);
if (result != DataSrc::W_SUCCESS) {
- return result;
+ return (result);
}
sqlite3_stmt* query = dbparameters->w_del_zone_;
@@ -1180,9 +1191,9 @@
sqlite3_reset(query);
if (q_result == SQLITE_DONE) {
- return DataSrc::W_SUCCESS;
- } else {
- return DataSrc::W_DB_ERROR;
+ return (DataSrc::W_SUCCESS);
+ } else {
+ return (DataSrc::W_DB_ERROR);
}
}
@@ -1191,7 +1202,7 @@
isc::dns::ConstRRsetPtr rrset)
{
if (transaction.getState() != DataSrcTransaction::RUNNING) {
- return DataSrc::W_ERROR;
+ return (DataSrc::W_ERROR);
}
int zone_id = transaction.getData()->get("zone_id")->intValue();
@@ -1204,7 +1215,7 @@
do {
result = delRR(zone_id, rrset->getName(), rrset->getType(), rdp->getCurrent());
if (result != DataSrc::W_SUCCESS) {
- return result;
+ return (result);
} else {
rdp->next();
}
@@ -1212,8 +1223,8 @@
} else {
result = delRR(zone_id, rrset->getName(), rrset->getType());
}
- return result;
-}
-
-}
-}
+ return (result);
+}
+
+}
+}
Modified: branches/trac374/src/lib/datasrc/tests/sqlite3_unittest.cc
==============================================================================
--- branches/trac374/src/lib/datasrc/tests/sqlite3_unittest.cc (original)
+++ branches/trac374/src/lib/datasrc/tests/sqlite3_unittest.cc Thu Oct 21 15:04:28 2010
@@ -963,7 +963,7 @@
int
install_writable_database()
{
- return system(INSTALL_PROG " " TEST_DATA_DIR "/test.sqlite3 " TEST_DATA_OUT_DIR "/write_test.sqlite3" );
+ return (system(INSTALL_PROG " " TEST_DATA_DIR "/test.sqlite3 " TEST_DATA_OUT_DIR "/write_test.sqlite3" ));
}
TEST_F(Sqlite3DataSourceTest, Transactions) {
@@ -1152,7 +1152,7 @@
RRsetPtr
getRRsetCallback_empty(void *arg1 UNUSED_PARAM,
void* arg2 UNUSED_PARAM) {
- return RRsetPtr();
+ return (RRsetPtr());
}
TEST_F(Sqlite3DataSourceTest, replaceZone_callback_empty) {
@@ -1198,11 +1198,7 @@
}
-TEST_F(Sqlite3DataSourceTest, replaceZone_callback_vector) {
- std::vector<RRsetPtr> rrsets;
-
- size_t i = 0;
-
+TEST_F(Sqlite3DataSourceTest, replaceZone_new_zone) {
// reset database
ASSERT_EQ(0, install_writable_database());
@@ -1210,54 +1206,51 @@
ASSERT_EQ(DataSrc::SUCCESS, data_source.close());
ASSERT_EQ(DataSrc::SUCCESS, data_source.init(SQLITE_DBFILE_WRITE));
- // Let's take the existing SOA for now
- RRsetList soa_rrset;
- EXPECT_EQ(DataSrc::SUCCESS,
- data_source.findExactRRset(zone_name, RRClass::IN(), RRType::SOA(),
- soa_rrset, find_flags, &zone_name));
- ASSERT_EQ(DataSrc::SUCCESS, find_flags);
- ASSERT_EQ(1, soa_rrset.size());
-
- rrsets.push_back(soa_rrset.findRRset(RRType::SOA(), RRClass::IN()));
- rrsets.push_back(new_rrset);
-
- // Replace them, roll back
- DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction1));
- ASSERT_EQ(DataSrc::W_SUCCESS, data_source.replaceZone(transaction1, isc::datasrc::callbackHelperRRsetVector, &rrsets, &i));
- ASSERT_EQ(DataSrc::W_SUCCESS, data_source.rollbackTransaction(transaction1));
-
- // check whether it still exists
- EXPECT_EQ(DataSrc::SUCCESS,
- data_source.findRRset(www_name, RRClass::IN(), RRType::A(),
- result_sets, find_flags, &zone_name));
- EXPECT_EQ(DataSrc::SUCCESS, find_flags);
- EXPECT_EQ(1, result_sets.size());
+ std::vector<RRsetPtr> rrsets;
+
+ RRsetPtr soa_rrset = RRsetPtr(new RRset(Name("new.example.com"),
+ RRClass::IN(),
+ RRType::SOA(),
+ RRTTL(3600)));
+ RdataPtr soa_rdata = isc::dns::rdata::createRdata(RRType::SOA(),
+ RRClass::IN(),
+ "new.example.com. new.example.com. 760 28800 7200 604800 3600");
+ soa_rrset->addRdata(soa_rdata);
+ rrsets.push_back(soa_rrset);
+
+ RRsetPtr a_rrset = RRsetPtr(new RRset(Name("new.example.com"),
+ RRClass::IN(),
+ RRType::A(),
+ RRTTL(3600)));
+ RdataPtr a_rdata = isc::dns::rdata::createRdata(RRType::A(),
+ RRClass::IN(),
+ "192.0.2.1");
+ a_rrset->addRdata(a_rdata);
+ rrsets.push_back(a_rrset);
+
+ // Try to start transaction without create_zone set to true
+ DataSrcTransaction transaction1(&data_source, soa_rrset->getName(), RRClass::IN());
+ ASSERT_EQ(DataSrc::W_NO_SUCH_ZONE, data_source.startTransaction(transaction1));
// Replace them, commit
- i = 0;
- DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
- ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction2));
- ASSERT_EQ(DataSrc::W_SUCCESS, data_source.replaceZone(transaction2, isc::datasrc::callbackHelperRRsetVector, &rrsets, &i));
+ size_t i = 0;
+
+ DataSrcTransaction transaction2(&data_source, soa_rrset->getName(), RRClass::IN());
+ ASSERT_EQ(DataSrc::W_SUCCESS, data_source.startTransaction(transaction2, true));
+ ASSERT_EQ(DataSrc::W_SUCCESS,
+ data_source.replaceZone(transaction2,
+ isc::datasrc::callbackHelperRRsetVector,
+ &rrsets, &i));
ASSERT_EQ(DataSrc::W_SUCCESS, data_source.commitTransaction(transaction2));
- // check whether the original rrs are gone now
- EXPECT_EQ(DataSrc::SUCCESS,
- data_source.findRRset(www_name, RRClass::IN(), RRType::A(),
- result_sets, find_flags, &zone_name));
- EXPECT_EQ(DataSrc::NAME_NOT_FOUND, find_flags);
- EXPECT_EQ(1, result_sets.size());
-
// and check if the new record exists
EXPECT_EQ(DataSrc::SUCCESS,
- data_source.findExactRRset(new_rrset->getName(), new_rrset->getClass(), new_rrset->getType(),
- result_sets, find_flags, &zone_name));
- //std::cout << "[XX] done, exit" << std::endl;
- //data_source.close();
- //exit(0);
+ data_source.findExactRRset(a_rrset->getName(), a_rrset->getClass(), a_rrset->getType(),
+ result_sets, find_flags, &a_rrset->getName()));
ASSERT_EQ(DataSrc::SUCCESS, find_flags);
ASSERT_EQ(1, result_sets.size());
}
+
TEST_F(Sqlite3DataSourceTest, delZone) {
// reset database
@@ -1313,12 +1306,12 @@
string s;
file >> s;
if (s == "") {
- return QuestionPtr();
+ return (QuestionPtr());
}
if (s.size() > 0 && s[0] == ';') {
std::string ignore_rest_of_line;
getline(file, ignore_rest_of_line);
- return QuestionPtr();
+ return (QuestionPtr());
}
Name n(s);
file >> s;
@@ -1329,7 +1322,7 @@
getline(file, line);
QuestionPtr question(new Question(n, rrclass, rrtype));
- return question;
+ return (question);
}
static RRsetPtr
@@ -1338,12 +1331,12 @@
string s;
file >> s;
if (s == "") {
- return RRsetPtr();
+ return (RRsetPtr());
}
if (s.size() > 0 && s[0] == ';') {
std::string ignore_rest_of_line;
getline(file, ignore_rest_of_line);
- return RRsetPtr();
+ return (RRsetPtr());
}
Name n(s);
@@ -1382,7 +1375,7 @@
RdataPtr rdata = createRdata(rrtype, rrclass, line);
rrset->addRdata(rdata);
}
- return rrset;
+ return (rrset);
}
// initialize the message with flags and codes,
@@ -1405,7 +1398,7 @@
if (prev_rrset) {
msg.addRRset(section, prev_rrset);
}
- return 1;
+ return (1);
}
if (prev_rrset) {
if (rrset) {
@@ -1426,7 +1419,7 @@
prev_rrset = rrset;
}
}
- return 0;
+ return (0);
}
int
@@ -1439,7 +1432,7 @@
if (prev_rrset) {
container.push_back(prev_rrset);
}
- return 1;
+ return (1);
}
if (prev_rrset) {
if (rrset) {
@@ -1460,7 +1453,7 @@
prev_rrset = rrset;
}
}
- return 0;
+ return (0);
}
int
@@ -1471,9 +1464,9 @@
rrsetsFromFile(myfile, container);
myfile.close();
} else {
- return -1;
+ return (-1);
}
- return 0;
+ return (0);
}
static int
@@ -1489,9 +1482,9 @@
rrsetsFromFile(myfile, m, Section::ANSWER());
myfile.close();
} else {
- return -1;
+ return (-1);
}
- return 0;
+ return (0);
}
static int
@@ -1522,9 +1515,9 @@
}
}
} else {
- return -1;
+ return (-1);
}
- return 0;
+ return (0);
}
// check a single rrset for exact match including rdata
More information about the bind10-changes
mailing list