Commit 867d9a39 authored by JINMEI Tatuya's avatar JINMEI Tatuya
Browse files

[2573] defined MasterLoader::getRRCount().

parent 1b32af4e
......@@ -76,7 +76,8 @@ public:
previous_name_(false),
complete_(false),
seen_error_(false),
warn_rfc1035_ttl_(true)
warn_rfc1035_ttl_(true),
rr_count_(0)
{}
void pushSource(const std::string& filename, const Name& current_origin) {
......@@ -418,12 +419,14 @@ private:
vector<IncludeInfo> include_info_;
bool previous_name_; // True if there was a previous name in this file
// (false at the beginning or after an $INCLUDE line)
public:
bool complete_; // All work done.
bool seen_error_; // Was there at least one error during the
// load?
bool warn_rfc1035_ttl_; // should warn if implicit TTL determination
// from the previous RR is used.
size_t rr_count_; // number of RRs successfully loaded
};
// A helper method of loadIncremental, parsing the first token of a new line.
......@@ -554,6 +557,7 @@ MasterLoader::MasterLoaderImpl::loadIncremental(size_t count_limit) {
rdata);
// Good, we loaded another one
++count;
++rr_count_;
} else {
seen_error_ = true;
if (!many_errors_) {
......@@ -630,5 +634,10 @@ MasterLoader::loadedSucessfully() const {
return (impl_->complete_ && !impl_->seen_error_);
}
size_t
MasterLoader::getRRCount() const {
return (impl_->rr_count_);
}
} // end namespace dns
} // end namespace isc
......@@ -142,6 +142,10 @@ public:
/// finishing the load.
bool loadedSucessfully() const;
size_t getRRCount() const;
size_t getSize() const;
size_t getPosition() const;
private:
class MasterLoaderImpl;
MasterLoaderImpl* impl_;
......@@ -151,3 +155,7 @@ private:
} // end namespace isc
#endif // MASTER_LOADER_H
// Local Variables:
// mode: c++
// End:
......@@ -153,11 +153,13 @@ TEST_F(MasterLoaderTest, basicLoad) {
RRClass::IN(), MasterLoader::MANY_ERRORS);
EXPECT_FALSE(loader_->loadedSucessfully());
EXPECT_EQ(0, loader_->getRRCount());
loader_->load();
EXPECT_TRUE(loader_->loadedSucessfully());
EXPECT_TRUE(errors_.empty());
EXPECT_TRUE(warnings_.empty());
EXPECT_EQ(4, loader_->getRRCount());
checkBasicRRs();
}
......@@ -260,7 +262,7 @@ TEST_F(MasterLoaderTest, popAfterError) {
const string include_str = "$include " TEST_DATA_SRCDIR
"/broken.zone\nwww 3600 IN AAAA 2001:db8::1\n";
stringstream ss(include_str);
// We don't test without MANY_ERRORS, we want to see what happens
// We perform the test with MANY_ERRORS, we want to see what happens
// after the error.
setLoader(ss, Name("example.org."), RRClass::IN(),
MasterLoader::MANY_ERRORS);
......@@ -269,6 +271,7 @@ TEST_F(MasterLoaderTest, popAfterError) {
EXPECT_FALSE(loader_->loadedSucessfully());
EXPECT_EQ(1, errors_.size()); // For the broken RR
EXPECT_EQ(1, warnings_.size()); // For missing EOLN
EXPECT_EQ(1, loader_->getRRCount()); // broken RR shouldn't be counted
// The included file doesn't contain anything usable, but the
// line after the include should be there.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment