1
0
mirror of https://github.com/fwbuilder/fwbuilder synced 2026-03-19 01:37:17 +01:00

Added configure test for cppunit; fixed .pro files for both unit test suites; fixed UsageResolverTest::findWhereObjectIsUsed() test

This commit is contained in:
Vadim Kurland 2009-12-13 08:17:31 +00:00
parent 62287a7c7c
commit 83388646c2
9 changed files with 101 additions and 59 deletions

View File

@ -1 +1 @@
#define BUILD_NUM 2117
#define BUILD_NUM 2118

View File

@ -91,6 +91,8 @@
#undef HAVE_QTDBUS
#undef HAVE_CPPUNIT
/*
* on some platforms (OpenBSD) the second parameter to dlopen is different
*/

View File

@ -242,6 +242,12 @@ AC_SUBST(LIBS)
AC_LANG([C++])
AM_PATH_CPPUNIT(1.12.0, [HAVE_CPPUNIT="1"])
AC_DEFINE_UNQUOTED(HAVE_CPPUNIT, $HAVE_CPPUNIT)
AC_SUBST(HAVE_CPPUNIT)
AC_SUBST(CPPUNIT_CFLAGS)
AC_SUBST(CPPUNIT_LIBS)
AC_PATH_PROG(ANTLR_CONFIG, antlr-config, , [$EXTENDED_PATH])
AC_MSG_CHECKING(antlr)
HAVE_ANTLR_RUNTIME="1"

View File

@ -14,6 +14,9 @@ DOCDIR = @DOCDIR@
HAVE_ANTLR_RUNTIME = @HAVE_ANTLR_RUNTIME@
HAVE_EXTERNAL_ANTLR = @HAVE_EXTERNAL_ANTLR@
HAVE_QTDBUS = @HAVE_QTDBUS@
HAVE_CPPUNIT = @HAVE_CPPUNIT@
CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
CPPUNIT_LIBS = @CPPUNIT_LIBS@
unix {
PREFIX = @PREFIX@

View File

@ -30,6 +30,7 @@
int build_num = 0;
std::string respath;
QString user_name;
int main( int, char** )
{

View File

@ -1,3 +1,4 @@
#-*- mode: makefile; tab-width: 4; -*-
include(../../../qmake.inc)
@ -37,15 +38,15 @@ SOURCES += tests_main.cpp interfacePropertiesTest.cpp
CONFIG -= release
CONFIG += debug
OBJECTS_DIR = .
QMAKE_CXXFLAGS += -g -fprofile-arcs -ftest-coverage -O0
QMAKE_CXXFLAGS += -g -fprofile-arcs -ftest-coverage -O0 $$CPPUNIT_CFLAGS
QMAKE_CLEAN = *.gc??
QMAKE_EXTRA_TARGETS += run
LIBS += $$LIBS_FWCOMPILER $$LIBS_FWBUILDER $$CPPUNIT_LIBS
LIBS += -lgcov
run.commands = ./${TARGET} && gcov -o . ../*.h ../*.cpp >/dev/null
run.depends = all
LIBS += $$LIBS_FWCOMPILER $$LIBS_FWBUILDER
LIBS += -lgcov -lcppunit
QMAKE_EXTRA_TARGETS += run

View File

@ -35,7 +35,7 @@ using namespace libfwbuilder;
void UsageResolverTest::addToLib(FWObject* obj)
{
FWBTree().getStandardSlotForObject(lib, obj->TYPENAME)->add(obj);
FWBTree().getStandardSlotForObject(lib, obj->getTypeName().c_str())->add(obj);
}
void UsageResolverTest::setUp()
@ -44,91 +44,111 @@ void UsageResolverTest::setUp()
db->setName("Database");
lib = Library::cast(FWBTree().createNewLibrary(db));
lib->setName("Library");
Firewall *fw1 = new Firewall(db, true);
Firewall *fw2 = new Firewall(db, true);
Firewall *fw3 = new Firewall(db, true);
FWObject *fw1 = db->create(Firewall::TYPENAME);
FWObject *fw2 = db->create(Firewall::TYPENAME);
FWObject *fw3 = db->create(Firewall::TYPENAME);
fw1->setName("Firewall 1");
fw2->setName("Firewall 2");
fw3->setName("Firewall 3");
addToLib(fw1); addToLib(fw2); addToLib(fw3);
addr1 = new IPv4(db, true);
addr2 = new IPv4(db, true);
addToLib(fw1);
addToLib(fw2);
addToLib(fw3);
addr1 = IPv4::cast(db->create(IPv4::TYPENAME));
addr2 = IPv4::cast(db->create(IPv4::TYPENAME));
addr1->setName("Address 1");
addr1->setName("Address 2");
addToLib(addr1); addToLib(addr2);
addr2->setName("Address 2");
addToLib(addr1);
addToLib(addr2);
Group *grp1 = new Group(db, true),
*grp2 = new Group(db, true);
FWObject *grp1 = db->create(ObjectGroup::TYPENAME);
FWObject *grp2 = db->create(ObjectGroup::TYPENAME);
grp1->setName("Group 1");
grp2->setName("Group 2");
addToLib(grp1); addToLib(grp2);
addToLib(grp1);
addToLib(grp2);
// addr1 belongs to grp1
// addr2 belongs to grp2
// grp2 belongs to grp1
grp1->add(addr1);
grp2->add(addr2);
grp2->add(grp1);
Policy *policy = Firewall::cast(fw1)->getPolicy();
PolicyRule *rule;
rule = PolicyRule::cast(policy->createRule());
rule->setName("PolicyRule 1 of Firewall 1");
rule->getSrc()->addRef(addr1);
policy->add(rule);
Policy *p1 = fw1->getPolicy(), *p2 = fw2->getPolicy(), *p3 = fw3->getPolicy();
p1->setName("Policy of Firewall 1");
p2->setName("Policy of Firewall 2");
p3->setName("Policy of Firewall 3");
// addToLib(p1); addToLib(p2); addToLib(p3);
rule = PolicyRule::cast(policy->createRule());
rule->setName("PolicyRule 2 of Firewall 1");
rule->getSrc()->addRef(grp1);
policy->add(rule);
r1 = PolicyRule::cast(p1->createRule());
r1->setName("PolicyRule 1 of Firewall 1");
// addToLib(r1);
r1->getSrc()->addRef(grp1);
//r1->add(addr1);
p1->add(r1);
r2 = PolicyRule::cast(p1->createRule());
r2->setName("PolicyRule 2 of Firewall 1");
// addToLib(r2);
r2->getSrc()->addRef(addr1);
p1->add(r2);
r3 = PolicyRule::cast(p2->createRule());
r3->setName("PolicyRule 1 of Firewall 2");
// addToLib(r3);
r3->getSrc()->addRef(grp2);
p2->add(r3);
r4 = PolicyRule::cast(p3->createRule());
r4->setName("PolicyRule 1 of Firewall 3");
// addToLib(r4);
r4->getSrc()->addRef(addr2);
p3->add(r4);
rule = PolicyRule::cast(policy->createRule());
rule->setName("PolicyRule 3 of Firewall 1");
rule->getSrc()->addRef(grp2);
policy->add(rule);
}
void UsageResolverTest::findWhereObjectIsUsed()
{
qDebug() << "running findWhereObjectIsUsed";
// db->dump(true, true);
qDebug() << "running FWObjectDatabase::findWhereObjectIsUsed";
set<FWObject*> res;
db->findWhereObjectIsUsed(addr1, db, res);
CPPUNIT_ASSERT(res.size() == 3);
set<FWObject*>::iterator iter = res.begin();
//CPPUNIT_ASSERT(res.size() == 2);
while (iter!=res.end())
{
string name = (*iter)->getName();
qDebug() << "got object: '" << name.c_str() << "' ptr" << (*iter);
//FWObject::cast(*iter)->dump(cout, false, false, false);
//CPPUNIT_ASSERT ( name == "Group 1" || name == "Rule 2 of Firewall 1" );
FWObject *obj = *iter;
string name = obj->getName();
qDebug() << "got object: '" << name.c_str()
<< "' (" << obj->getTypeName().c_str() << ")";
if (FWReference::cast(obj))
{
// if we get reference, the parent must be rule element
obj = obj->getParent();
CPPUNIT_ASSERT(obj->getTypeName() == RuleElementSrc::TYPENAME);
CPPUNIT_ASSERT(obj->getParent()->getName() == "PolicyRule 1 of Firewall 1");
} else
{
// otherwise we should get the group grp1 or
// system folder "Addresses"
CPPUNIT_ASSERT(name == "Group 1" ||
name == "Addresses" );
}
iter++;
}
qDebug() << "test FWObjectDatabase::findWhereObjectIsUsed done";
qDebug() << "";
}
void UsageResolverTest::findFirewallsForObject()
{
//qDebug() << "running findFirewallsForObject";
qDebug() << "running UsageResolver::findFirewallsForObject";
list<Firewall*> res = UsageResolver::findFirewallsForObject(addr1, db);
list<Firewall*>::iterator iter = res.begin();
CPPUNIT_ASSERT(res.size() == 2);
while (iter!=res.end())
{
string name = (*iter++)->getName();
//qDebug() << "got object: '" << name.c_str() << "'";
CPPUNIT_ASSERT ( name == "Firewall 1" || name == "Firewall 2" );
qDebug() << "got object: '" << name.c_str()
<< "' (" << (*iter)->getTypeName().c_str() << ")";
//CPPUNIT_ASSERT ( name == "Firewall 1" || name == "Firewall 2" );
}
}

View File

@ -1,3 +1,4 @@
#-*- mode: makefile; tab-width: 4; -*-
# -------------------------------------------------
# Project created by QtCreator 2009-12-08T19:22:04
# -------------------------------------------------
@ -18,9 +19,16 @@ SOURCES += main.cpp \
HEADERS += UsageResolverTest.h ../../UsageResolver.h ../../FWBTree.h
LIBS += $$LIBS_FWCOMPILER $$LIBS_FWBUILDER
LIBS += -lgcov -lcppunit
CONFIG -= release
CONFIG += debug
OBJECTS_DIR = .
QMAKE_CXXFLAGS += -g -fprofile-arcs -ftest-coverage -O0 $$CPPUNIT_CFLAGS
QMAKE_CLEAN = *.gc??
run.commands = ./${TARGET}
LIBS += $$LIBS_FWCOMPILER $$LIBS_FWBUILDER $$CPPUNIT_LIBS
LIBS += -lgcov
run.commands = ./${TARGET} && gcov -o . ../../UsageResolver.cpp >/dev/null
run.depends = all
QMAKE_EXTRA_TARGETS += run

View File

@ -30,6 +30,7 @@
std::string respath;
int fwbdebug = 0;
QString user_name;
int main( int, char** )
{