1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-23 22:50:09 +03:00

Feature #407: Fix tests

This commit is contained in:
Carlos Martín 2011-05-25 18:45:16 +02:00
parent 7285fbd5c0
commit 3db7376b5e
7 changed files with 111 additions and 103 deletions

View File

@ -27,15 +27,15 @@ const string names[] = {"cluster_a", "Second cluster"};
const string xmls[] =
{
"<CLUSTER><ID>1</ID><NAME>cluster_a</NAME></CLUSTER>",
"<CLUSTER><ID>2</ID><NAME>Second cluster</NAME></CLUSTER>"
"<CLUSTER><ID>1</ID><NAME>cluster_a</NAME><HOSTS></HOSTS></CLUSTER>",
"<CLUSTER><ID>2</ID><NAME>Second cluster</NAME><HOSTS></HOSTS></CLUSTER>"
};
const string cluster_default =
"<CLUSTER><ID>0</ID><NAME>default</NAME></CLUSTER>";
"<CLUSTER><ID>0</ID><NAME>default</NAME><HOSTS></HOSTS></CLUSTER>";
const string cluster_xml_dump =
"<CLUSTER_POOL><CLUSTER><ID>0</ID><NAME>default</NAME></CLUSTER><CLUSTER><ID>1</ID><NAME>cluster_a</NAME></CLUSTER><CLUSTER><ID>3</ID><NAME>cluster_c</NAME></CLUSTER><CLUSTER><ID>4</ID><NAME>cluster_d</NAME></CLUSTER></CLUSTER_POOL>";
"<CLUSTER_POOL><CLUSTER><ID>0</ID><NAME>default</NAME><HOSTS></HOSTS></CLUSTER><CLUSTER><ID>1</ID><NAME>cluster_a</NAME><HOSTS></HOSTS></CLUSTER><CLUSTER><ID>3</ID><NAME>cluster_c</NAME><HOSTS></HOSTS></CLUSTER><CLUSTER><ID>4</ID><NAME>cluster_d</NAME><HOSTS></HOSTS></CLUSTER></CLUSTER_POOL>";
const string host_0_cluster =
"<HOST><ID>0</ID><NAME>Host one</NAME><STATE>0</STATE><IM_MAD>im_mad</IM_MAD><VM_MAD>vmm_mad</VM_MAD><TM_MAD>tm_mad</TM_MAD><LAST_MON_TIME>0</LAST_MON_TIME><CID>1</CID><HOST_SHARE><DISK_USAGE>0</DISK_USAGE><MEM_USAGE>0</MEM_USAGE><CPU_USAGE>0</CPU_USAGE><MAX_DISK>0</MAX_DISK><MAX_MEM>0</MAX_MEM><MAX_CPU>0</MAX_CPU><FREE_DISK>0</FREE_DISK><FREE_MEM>0</FREE_MEM><FREE_CPU>0</FREE_CPU><USED_DISK>0</USED_DISK><USED_MEM>0</USED_MEM><USED_CPU>0</USED_CPU><RUNNING_VMS>0</RUNNING_VMS></HOST_SHARE><TEMPLATE></TEMPLATE></HOST>";
@ -83,8 +83,6 @@ class ClusterPoolTest : public PoolTest
CPPUNIT_TEST (name_pool);
CPPUNIT_TEST (duplicates);
CPPUNIT_TEST (set_cluster);
CPPUNIT_TEST (remove_cluster);
CPPUNIT_TEST (delete_cluster);
CPPUNIT_TEST (dump);
@ -260,72 +258,12 @@ public:
/* ********************************************************************* */
void set_cluster()
{
Host* host;
int rc;
string xml_str, err;
init_hp();
host = hpool->get(0, false);
CPPUNIT_ASSERT(host != 0);
rc = host->set_cluster(1);
CPPUNIT_ASSERT( rc == 0 );
hpool->update(host);
host->to_xml(xml_str);
CPPUNIT_ASSERT( xml_str == host_0_cluster);
}
/* ********************************************************************* */
void remove_cluster()
{
Host* host;
int rc;
string xml_str;
init_hp();
host = hpool->get(0, false);
CPPUNIT_ASSERT(host != 0);
// Set cluster
rc = host->set_cluster(1);
CPPUNIT_ASSERT( rc == 0 );
hpool->update(host);
host->to_xml(xml_str);
CPPUNIT_ASSERT( xml_str == host_0_cluster);
// Remove from the cluster
rc = cpool->set_default_cluster(host);
CPPUNIT_ASSERT( rc == 0 );
hpool->update(host);
// The host should have been moved to the default cluster
host = hpool->get(0, false);
CPPUNIT_ASSERT(host != 0);
host->to_xml(xml_str);
CPPUNIT_ASSERT( xml_str == host_0_default);
}
/* ********************************************************************* */
void delete_cluster()
{
Host * host;
Cluster * cluster;
Cluster * cluster, * cluster_old;
int rc, oid;
int rc, oid, host_gid;
string xml_str;
init_hp();
@ -338,11 +276,28 @@ public:
cluster = cpool->get(1, false);
// Get current host cluster
host_gid = host->get_gid();
// Set cluster
rc = host->set_cluster(cluster->get_oid());
rc = host->set_gid(cluster->get_oid());
CPPUNIT_ASSERT( rc == 0 );
// Add host ID to cluster
rc = static_cast<ObjectCollection*>(cluster)->add_collection_id(host);
CPPUNIT_ASSERT( rc == 0 );
// Update the DB
hpool->update(host);
cpool->update(cluster);
// Now get the old cluster, and remove the Host Id from it
cluster_old = cpool->get(host_gid, false);
CPPUNIT_ASSERT(cluster_old != 0);
cluster_old->del_collection_id(host);
cpool->update(cluster_old);
host->to_xml(xml_str);
CPPUNIT_ASSERT( xml_str == host_0_cluster);

View File

@ -28,12 +28,13 @@ const string names[] = {"First name", "Second name"};
const string xmls[] =
{
"<GROUP><ID>100</ID><UID>0</UID><NAME>First name</NAME></GROUP>",
"<GROUP><ID>101</ID><UID>1</UID><NAME>Second name</NAME></GROUP>"
"<GROUP><ID>100</ID><UID>0</UID><NAME>First name</NAME><USERS></USERS></GROUP>",
"<GROUP><ID>101</ID><UID>1</UID><NAME>Second name</NAME><USERS></USERS></GROUP>"
};
const string group_xml_dump =
"<GROUP_POOL><GROUP><ID>0</ID><UID>0</UID><NAME>oneadmin</NAME></GROUP><GROUP><ID>1</ID><UID>0</UID><NAME>users</NAME></GROUP><GROUP><ID>100</ID><UID>5</UID><NAME>group_a</NAME></GROUP><GROUP><ID>102</ID><UID>5</UID><NAME>group_c</NAME></GROUP><GROUP><ID>103</ID><UID>5</UID><NAME>group_d</NAME></GROUP></GROUP_POOL>";
"<GROUP_POOL><GROUP><ID>0</ID><UID>0</UID><NAME>oneadmin</NAME><USERS></USERS></GROUP><GROUP><ID>1</ID><UID>0</UID><NAME>users</NAME><USERS></USERS></GROUP><GROUP><ID>100</ID><UID>5</UID><NAME>group_a</NAME><USERS></USERS></GROUP><GROUP><ID>102</ID><UID>5</UID><NAME>group_c</NAME><USERS></USERS></GROUP><GROUP><ID>103</ID><UID>5</UID><NAME>group_d</NAME><USERS></USERS></GROUP></GROUP_POOL>";
/* ************************************************************************* */
/* ************************************************************************* */

View File

@ -29,6 +29,7 @@ public:
need_vm_pool = true;
need_host_pool = true;
need_user_pool = true;
need_group_pool = true;
need_vnet_pool = true;
need_image_pool= true;

View File

@ -29,6 +29,7 @@ public:
need_vm_pool = true;
need_host_pool = true;
need_user_pool = true;
need_group_pool = true;
need_vnet_pool = true;
need_image_pool= true;

View File

@ -209,6 +209,11 @@ void Nebula::start()
vnpool = tester->create_vnpool(db,mac_prefix,size);
}
if (tester->need_group_pool)
{
gpool = tester->create_gpool(db);
}
if (tester->need_user_pool)
{
upool = tester->create_upool(db);
@ -230,11 +235,6 @@ void Nebula::start()
{
tpool = tester->create_tpool(db);
}
if (tester->need_group_pool)
{
gpool = tester->create_gpool(db);
}
}
catch (exception&)
{

View File

@ -17,16 +17,40 @@
Import('env')
env.Prepend(LIBS=[
'nebula_um',
'nebula_group',
'nebula_cluster',
'nebula_host',
'nebula_pool',
'nebula_template',
'nebula_xml',
'nebula_log',
'nebula_common',
'nebula_sql',
### TODO: delete not needed
'nebula_core_test',
'nebula_host',
'nebula_cluster',
'nebula_xml',
'nebula_vmm',
'nebula_im',
'nebula_rm',
'nebula_tm',
'nebula_um',
'nebula_mad',
'nebula_template',
'nebula_vm',
'nebula_vmtemplate',
'nebula_group',
'nebula_vnm',
'nebula_image',
'nebula_pool',
'nebula_hm',
'nebula_authm',
'nebula_common',
'nebula_mad',
'nebula_core',
'nebula_lcm',
'nebula_dm',
'nebula_sql',
'nebula_log',
'crypto'
])

View File

@ -31,26 +31,24 @@ const string usernames[] = { "A user", "B user", "C user", "D user", "E user" };
const string passwords[] = { "A pass", "B pass", "C pass", "D pass", "E pass" };
const string dump_result =
"<USER_POOL><USER><ID>0</ID><GID>0</GID><NAME>one_user_test</NAME>"
"<PASSWORD>5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8</PASSWORD>"
"<ENABLED>1</ENABLED></USER><USER><ID>1</ID><GID>0</GID><NAME>a</NAME>"
"<PASSWORD>p</PASSWORD><ENABLED>1</ENABLED></USER><USER>"
"<ID>2</ID><GID>0</GID><NAME>a name</NAME><PASSWORD>pass</PASSWORD>"
"<ENABLED>1</ENABLED></USER><USER><ID>3</ID><GID>0</GID><NAME>a_name</NAME>"
"<PASSWORD>password</PASSWORD><ENABLED>1</ENABLED></USER><USER>"
"<ID>4</ID><GID>0</GID><NAME>another name</NAME><PASSWORD>secret</PASSWORD>"
"<ENABLED>1</ENABLED></USER><USER><ID>5</ID><GID>0</GID><NAME>user</NAME>"
"<PASSWORD>1234</PASSWORD><ENABLED>1</ENABLED></USER>"
"</USER_POOL>";
"<USER_POOL><USER><ID>0</ID><GID>0</GID><NAME>one_user_test</NAME><PASSWORD>5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8</PASSWORD><ENABLED>1</ENABLED><GROUPS><ID>0</ID></GROUPS></USER><USER><ID>1</ID><GID>0</GID><NAME>a</NAME><PASSWORD>p</PASSWORD><ENABLED>1</ENABLED><GROUPS><ID>0</ID></GROUPS></USER><USER><ID>2</ID><GID>0</GID><NAME>a name</NAME><PASSWORD>pass</PASSWORD><ENABLED>1</ENABLED><GROUPS><ID>0</ID></GROUPS></USER><USER><ID>3</ID><GID>0</GID><NAME>a_name</NAME><PASSWORD>password</PASSWORD><ENABLED>1</ENABLED><GROUPS><ID>0</ID></GROUPS></USER><USER><ID>4</ID><GID>0</GID><NAME>another name</NAME><PASSWORD>secret</PASSWORD><ENABLED>1</ENABLED><GROUPS><ID>0</ID></GROUPS></USER><USER><ID>5</ID><GID>0</GID><NAME>user</NAME><PASSWORD>1234</PASSWORD><ENABLED>1</ENABLED><GROUPS><ID>0</ID></GROUPS></USER></USER_POOL>";
const string dump_where_result =
"<USER_POOL><USER><ID>1</ID><GID>0</GID><NAME>a</NAME>"
"<PASSWORD>p</PASSWORD><ENABLED>1</ENABLED></USER><USER>"
"<ID>2</ID><GID>0</GID><NAME>a name</NAME><PASSWORD>pass</PASSWORD>"
"<ENABLED>1</ENABLED></USER><USER><ID>3</ID><GID>0</GID><NAME>a_name</NAME>"
"<PASSWORD>password</PASSWORD><ENABLED>1</ENABLED></USER><USER>"
"<ID>4</ID><GID>0</GID><NAME>another name</NAME><PASSWORD>secret</PASSWORD>"
"<ENABLED>1</ENABLED></USER></USER_POOL>";
"<USER_POOL><USER><ID>1</ID><GID>0</GID><NAME>a</NAME><PASSWORD>p</PASSWORD><ENABLED>1</ENABLED><GROUPS><ID>0</ID></GROUPS></USER><USER><ID>2</ID><GID>0</GID><NAME>a name</NAME><PASSWORD>pass</PASSWORD><ENABLED>1</ENABLED><GROUPS><ID>0</ID></GROUPS></USER><USER><ID>3</ID><GID>0</GID><NAME>a_name</NAME><PASSWORD>password</PASSWORD><ENABLED>1</ENABLED><GROUPS><ID>0</ID></GROUPS></USER><USER><ID>4</ID><GID>0</GID><NAME>another name</NAME><PASSWORD>secret</PASSWORD><ENABLED>1</ENABLED><GROUPS><ID>0</ID></GROUPS></USER></USER_POOL>";
#include "NebulaTest.h"
class NebulaTestUser: public NebulaTest
{
public:
NebulaTestUser():NebulaTest()
{
NebulaTest::the_tester = this;
need_group_pool = true;
need_user_pool = true;
}
};
class UserPoolTest : public PoolTest
{
@ -78,14 +76,20 @@ class UserPoolTest : public PoolTest
protected:
NebulaTestUser * tester;
UserPool * upool;
GroupPool * gpool;
void bootstrap(SqlDB* db)
{
UserPool::bootstrap(db);
// setUp overwritten
};
PoolSQL* create_pool(SqlDB* db)
{
return new UserPool(db);
// setUp overwritten
return upool;
};
int allocate(int index)
@ -112,6 +116,28 @@ public:
~UserPoolTest(){xmlCleanupParser();};
void setUp()
{
create_db();
tester = new NebulaTestUser();
Nebula& neb = Nebula::instance();
neb.start();
upool = neb.get_upool();
gpool = neb.get_gpool();
pool = upool;
};
void tearDown()
{
delete_db();
delete tester;
};
/* ********************************************************************* */
/* ********************************************************************* */
@ -288,13 +314,13 @@ public:
ostringstream oss;
((UserPool*)pool)->dump(oss, "");
/*
if( oss.str() != dump_result )
{
cout << endl << oss.str() << endl << "========"
<< endl << dump_result << endl << "--------";
}
//
//*/
CPPUNIT_ASSERT( oss.str() == dump_result );
}