00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 static const char *rcsid = "$Header: /export/cvs-gridlab/wp-1/Codes/GATEngine/C-reference/test/internal/resourcedescription_tests.c,v 1.9 2004/04/20 17:04:43 hartmutkaiser Exp $";
00018
00019
00020 #include <stdio.h>
00021 #include <string.h>
00022
00023
00024 #include "GAT.h"
00025 #include "GATMemoryStream.h"
00026
00027 #include "GATTestUtils.h"
00028
00029
00030
00031
00032
00033
00034 static GATSoftwareResourceDescription
00035 get_os_software_rd_direct(void);
00036
00037 static GATSoftwareResourceDescription
00038 get_os_software_rd_indirect(void);
00039
00040 static void
00041 test_os_requirements(GATSoftwareResourceDescription desc);
00042
00043 static GATHardwareResourceDescription
00044 get_hardware_rd_direct(void);
00045
00046 static GATHardwareResourceDescription
00047 get_hardware_rd_indirect(void);
00048
00049 static void
00050 test_hw_requirements(GATHardwareResourceDescription desc);
00051
00052
00053
00054
00055 int main (void)
00056 {
00057 GATContext context = NULL;
00058 GATSoftwareResourceDescription os_desc1 = NULL;
00059 GATSoftwareResourceDescription os_desc2 = NULL;
00060 GATHardwareResourceDescription hw_desc1 = NULL;
00061 GATHardwareResourceDescription hw_desc2 = NULL;
00062
00063 GATResult retval = GAT_FAIL;
00064 GATBool isequal = GATFalse;
00065
00066 GAT_TEST_INIT (-1);
00067 GAT_TEST_SUITE("Resource Description");
00068
00069 context = GATContext_Create();
00070 GAT_TEST(NULL != context);
00071
00072
00073
00074 GAT_TEST_TRACE(GATType_GATContext == GATContext_GetType(context), context);
00075
00076
00077 os_desc1 = get_os_software_rd_direct();
00078 os_desc2 = get_os_software_rd_indirect();
00079 hw_desc1 = get_hardware_rd_direct();
00080 hw_desc2 = get_hardware_rd_indirect();
00081
00082 GAT_TEST_START ("Resource Description basic tests");
00083
00084
00085 {
00086 isequal = GATFalse;
00087 retval = GATSoftwareResourceDescription_Equals (os_desc1, os_desc2, &isequal);
00088
00089 GAT_TEST (GAT_SUCCEEDED(retval));
00090 GAT_TEST (GATTrue == isequal);
00091 }
00092
00093
00094 {
00095 isequal = GATFalse;
00096 retval = GATHardwareResourceDescription_Equals (hw_desc1, hw_desc2, &isequal);
00097
00098 GAT_TEST (GAT_SUCCEEDED(retval));
00099 GAT_TEST (GATTrue == isequal);
00100 }
00101
00102
00103 {
00104 GATTable_const a = GATSoftwareResourceDescription_GetDescription (os_desc1);
00105 GATTable_const b = GATSoftwareResourceDescription_GetDescription (os_desc2);
00106
00107 GAT_TEST (NULL != a);
00108 GAT_TEST (NULL != b);
00109 GAT_TEST (a != b);
00110
00111 isequal = GATFalse;
00112 retval = GATTable_Equals (a, b, &isequal);
00113
00114 GAT_TEST (GAT_SUCCEEDED(retval));
00115 GAT_TEST (GATTrue == isequal);
00116 }
00117
00118 {
00119 GATTable_const a = GATHardwareResourceDescription_GetDescription (hw_desc1);
00120 GATTable_const b = GATHardwareResourceDescription_GetDescription (hw_desc2);
00121
00122 GAT_TEST (NULL != a);
00123 GAT_TEST (NULL != b);
00124 GAT_TEST(a != b);
00125
00126 isequal = GATFalse;
00127 retval = GATTable_Equals (a, b, &isequal);
00128
00129 GAT_TEST (GAT_SUCCEEDED(retval));
00130 GAT_TEST (GATTrue == isequal);
00131 }
00132
00133
00134 {
00135 char *buffer = NULL;
00136 GATuint32 buffer_size = 0;
00137 GATSoftwareResourceDescription new_description = NULL;
00138
00139 GATMemoryStream stream = GATMemoryStream_Create (0, 0, GATFalse);
00140 GAT_TEST (NULL != stream);
00141
00142 retval = GATSoftwareResourceDescription_Serialise (os_desc1,
00143 GATMemoryStream_ToGATObject(stream),
00144 GATFalse);
00145 GAT_TEST (GAT_SUCCEEDED(retval));
00146
00147 buffer = GATMemoryStream_GetBuffer (stream, &buffer_size, GATFalse);
00148 GAT_TEST (NULL != buffer);
00149 GAT_TEST (buffer_size > 0);
00150
00151
00152 GATMemoryStream_Seek (stream, GATOrigin_Set, 0, 0);
00153
00154 new_description = GATSoftwareResourceDescription_DeSerialise (context,
00155 GATMemoryStream_ToGATObject(stream),
00156 &retval);
00157 GAT_TEST (GAT_SUCCEEDED(retval));
00158 GAT_TEST (NULL != new_description);
00159
00160 retval = GATSoftwareResourceDescription_Equals (os_desc1, new_description, &isequal);
00161 GAT_TEST (retval == GAT_SUCCESS);
00162 GAT_TEST (GATTrue == isequal);
00163
00164 GATSoftwareResourceDescription_Destroy (&new_description);
00165 GATMemoryStream_Destroy (&stream);
00166 }
00167
00168
00169 {
00170 retval = GATSoftwareResourceDescription_RemoveResourceAttribute (os_desc1, "os.name");
00171 GAT_TEST (GAT_SUCCEEDED(retval));
00172
00173 isequal = GATTrue;
00174 retval = GATSoftwareResourceDescription_Equals (os_desc1, os_desc2, &isequal);
00175 GAT_TEST (GAT_SUCCEEDED(retval));
00176 GAT_TEST (GATFalse == isequal);
00177 }
00178
00179 {
00180 retval = GATHardwareResourceDescription_RemoveResourceAttribute (hw_desc1, "memory.size");
00181 GAT_TEST (GAT_SUCCEEDED(retval));
00182
00183 isequal = GATTrue;
00184 retval = GATSoftwareResourceDescription_Equals (os_desc1, os_desc2, &isequal);
00185 GAT_TEST (GAT_SUCCEEDED(retval));
00186 GAT_TEST (GATFalse == isequal);
00187 }
00188
00189
00190 retval = GATHardwareResourceDescription_AddResourceDescription (hw_desc1,
00191 GATSoftwareResourceDescription_ToGATResourceDescription (os_desc1));
00192
00193 GAT_TEST (GAT_SUCCEEDED(retval));
00194
00195 retval = GATHardwareResourceDescription_AddResourceDescription (hw_desc1,
00196 GATSoftwareResourceDescription_ToGATResourceDescription (os_desc2));
00197
00198 GAT_TEST (GAT_SUCCEEDED(retval));
00199
00200 retval = GATHardwareResourceDescription_AddResourceDescription (hw_desc2,
00201 GATSoftwareResourceDescription_ToGATResourceDescription (os_desc1));
00202
00203 GAT_TEST (GAT_SUCCEEDED(retval));
00204
00205 retval = GATHardwareResourceDescription_AddResourceDescription (hw_desc2,
00206 GATSoftwareResourceDescription_ToGATResourceDescription (os_desc2));
00207
00208 GAT_TEST (GAT_SUCCEEDED(retval));
00209
00210
00211
00212 {
00213 isequal = GATFalse;
00214 retval = GATHardwareResourceDescription_Equals (hw_desc1, hw_desc2, &isequal);
00215
00216 GAT_TEST (GAT_SUCCEEDED(retval));
00217 GAT_TEST (GATFalse == isequal);
00218 }
00219
00220
00221 {
00222 char *buffer = NULL;
00223 GATuint32 buffer_size = 0;
00224 GATHardwareResourceDescription new_description = NULL;
00225
00226 GATMemoryStream stream = GATMemoryStream_Create (0, 0, GATFalse);
00227 GAT_TEST (NULL != stream);
00228
00229 retval = GATHardwareResourceDescription_Serialise(hw_desc1,
00230 GATMemoryStream_ToGATObject(stream), GATFalse);
00231 GAT_TEST (GAT_SUCCEEDED(retval));
00232
00233 buffer = GATMemoryStream_GetBuffer (stream, &buffer_size, GATFalse);
00234 GAT_TEST (NULL != buffer);
00235 GAT_TEST (buffer_size > 0);
00236
00237
00238 GATMemoryStream_Seek (stream, GATOrigin_Set, 0, 0);
00239
00240 new_description = GATHardwareResourceDescription_DeSerialise(context,
00241 GATMemoryStream_ToGATObject(stream), &retval);
00242 GAT_TEST(GAT_SUCCEEDED(retval));
00243 GAT_TEST(NULL != new_description);
00244
00245 retval = GATHardwareResourceDescription_Equals (hw_desc1, new_description, &isequal);
00246 GAT_TEST (retval == GAT_SUCCESS);
00247 GAT_TEST (GATTrue == isequal);
00248
00249 GATHardwareResourceDescription_Destroy (&new_description);
00250 GATMemoryStream_Destroy (&stream);
00251 }
00252
00253
00254 {
00255 retval = GATHardwareResourceDescription_RemoveResourceDescription (hw_desc1,
00256 GATSoftwareResourceDescription_ToGATResourceDescription (os_desc2));
00257
00258 GAT_TEST (GAT_SUCCEEDED(retval));
00259
00260 isequal = GATTrue;
00261 retval = GATHardwareResourceDescription_Equals(hw_desc1, hw_desc2, &isequal);
00262
00263 GAT_TEST (GAT_SUCCEEDED(retval));
00264 GAT_TEST (GATFalse == isequal);
00265 }
00266
00267
00268 GATHardwareResourceDescription_Destroy (&hw_desc2);
00269 GATHardwareResourceDescription_Destroy (&hw_desc1);
00270 GATSoftwareResourceDescription_Destroy (&os_desc2);
00271 GATSoftwareResourceDescription_Destroy (&os_desc1);
00272
00273 GAT_TEST_STOP ();
00274 GAT_TEST_FINISH ();
00275
00276 return (0);
00277 }
00278
00279
00280 static void
00281 test_os_requirements (GATSoftwareResourceDescription desc)
00282 {
00283 GATTable_const t = GATSoftwareResourceDescription_GetDescription(desc);
00284 char buffer[32];
00285 GATResult retval;
00286
00287 retval = GATTable_Get_String(t, "os.name", buffer, sizeof(buffer));
00288 GAT_TEST (retval > 0);
00289 GAT_TEST (!strcmp(buffer, "some_name"));
00290
00291 retval = GATTable_Get_String(t, "os.type", buffer, sizeof(buffer));
00292 GAT_TEST (retval > 0);
00293 GAT_TEST (!strcmp(buffer, "some_type"));
00294
00295 retval = GATTable_Get_String(t, "os.version", buffer, sizeof(buffer));
00296 GAT_TEST (retval > 0);
00297 GAT_TEST (!strcmp(buffer, "some_version"));
00298
00299 retval = GATTable_Get_String(t, "os.release", buffer, sizeof(buffer));
00300 GAT_TEST (retval > 0);
00301 GAT_TEST (!strcmp(buffer, "some_release"));
00302 }
00303
00304 static GATSoftwareResourceDescription
00305 get_os_software_rd_direct(void)
00306 {
00307 GATTable requirements = NULL;
00308 GATSoftwareResourceDescription sw_desc = NULL;
00309
00310 GAT_TEST_START ("get_os_software_rd_direct");
00311
00312
00313 requirements = GATTable_Create();
00314 GAT_TEST (NULL != requirements);
00315
00316
00317 GATTable_Add_String (requirements, "os.name", "some_name");
00318 GATTable_Add_String (requirements, "os.type", "some_type");
00319 GATTable_Add_String (requirements, "os.version", "some_version");
00320 GATTable_Add_String (requirements, "os.release", "some_release");
00321
00322
00323 sw_desc = GATSoftwareResourceDescription_Create (requirements);
00324 GAT_TEST (NULL != sw_desc);
00325
00326 test_os_requirements (sw_desc);
00327
00328 GATSoftwareResourceDescription_SetDescription (sw_desc, requirements);
00329 test_os_requirements (sw_desc);
00330
00331 GATTable_Destroy (&requirements);
00332
00333 GAT_TEST_STOP ();
00334
00335 return (sw_desc);
00336 }
00337
00338 static GATSoftwareResourceDescription
00339 get_os_software_rd_indirect(void)
00340 {
00341 GATSoftwareResourceDescription sw_desc = NULL;
00342
00343 GAT_TEST_START("get_os_software_rd_indirect");
00344
00345
00346 sw_desc = GATSoftwareResourceDescription_Create(0);
00347 GAT_TEST (NULL != sw_desc);
00348
00349
00350 GATSoftwareResourceDescription_AddResourceAttribute_String (sw_desc, "os.name", "some_name");
00351 GATSoftwareResourceDescription_AddResourceAttribute_String (sw_desc, "os.type", "some_type");
00352 GATSoftwareResourceDescription_AddResourceAttribute_String (sw_desc, "os.version", "some_version");
00353 GATSoftwareResourceDescription_AddResourceAttribute_String (sw_desc, "os.release", "some_release");
00354
00355
00356 test_os_requirements (sw_desc);
00357
00358
00359 GATSoftwareResourceDescription_AddResourceAttribute_String (sw_desc, "test_key", "some_value");
00360 GATSoftwareResourceDescription_RemoveResourceAttribute (sw_desc, "test_key");
00361
00362
00363 test_os_requirements (sw_desc);
00364
00365 GAT_TEST_STOP ();
00366
00367 return (sw_desc);
00368 }
00369
00370 static void
00371 test_hw_requirements(GATHardwareResourceDescription desc)
00372 {
00373 GATTable_const t = NULL;
00374 GATResult retval = GAT_SUCCESS;
00375 char buffer[32];
00376 float fvar = 0;
00377
00378 GAT_TEST_START("test_hw_requirements");
00379
00380 t = GATHardwareResourceDescription_GetDescription (desc);
00381 GAT_TEST (NULL != t);
00382
00383 retval = GATTable_Get_float(t, "memory.size", &fvar);
00384 GAT_TEST (GAT_SUCCEEDED(retval));
00385 GAT_TEST (fvar == 0.256f);
00386
00387 retval = GATTable_Get_float(t, "memory.accesstime", &fvar);
00388 GAT_TEST (GAT_SUCCEEDED(retval));
00389 GAT_TEST (fvar == 2e-9f);
00390
00391 retval = GATTable_Get_float(t, "memory.str", &fvar);
00392 GAT_TEST (GAT_SUCCEEDED(retval));
00393 GAT_TEST (fvar == 0.1f);
00394
00395 retval = GATTable_Get_String(t, "machine.type", buffer, sizeof(buffer));
00396 GAT_TEST (retval > 0 );
00397 GAT_TEST (!strcmp(buffer, "some_machine_type"));
00398
00399 retval = GATTable_Get_String(t, "machine.node", buffer, sizeof(buffer));
00400 GAT_TEST (retval > 0 );
00401 GAT_TEST (!strcmp(buffer, "some_machine_nodename"));
00402
00403 GAT_TEST_STOP ();
00404 }
00405
00406 static GATHardwareResourceDescription
00407 get_hardware_rd_direct(void)
00408 {
00409 GATHardwareResourceDescription hw_desc = NULL;
00410 GATTable requirements = NULL;
00411
00412 GAT_TEST_START("get_hardware_rd_direct");
00413
00414
00415 requirements = GATTable_Create();
00416 GAT_TEST (NULL != requirements);
00417
00418
00419 GATTable_Add_float (requirements, "memory.size", 0.256f);
00420 GATTable_Add_float (requirements, "memory.accesstime", 2e-9f);
00421 GATTable_Add_float (requirements, "memory.str", 0.1f);
00422 GATTable_Add_String (requirements, "machine.type", "some_machine_type");
00423 GATTable_Add_String (requirements, "machine.node", "some_machine_nodename");
00424
00425
00426 hw_desc = GATHardwareResourceDescription_Create(requirements);
00427 GAT_TEST (NULL != hw_desc);
00428
00429
00430 test_hw_requirements (hw_desc);
00431
00432
00433 GATHardwareResourceDescription_AddResourceAttribute_String (hw_desc, "test_key", "some_value");
00434 GATHardwareResourceDescription_RemoveResourceAttribute (hw_desc, "test_key");
00435
00436
00437 test_hw_requirements (hw_desc);
00438
00439 GATTable_Destroy (&requirements);
00440
00441 GAT_TEST_STOP ();
00442
00443 return hw_desc;
00444 }
00445
00446 static GATHardwareResourceDescription
00447 get_hardware_rd_indirect(void)
00448 {
00449 GATHardwareResourceDescription hw_desc = NULL;
00450
00451 GAT_TEST_START ("get_hardware_rd_indirect");
00452
00453
00454 hw_desc = GATHardwareResourceDescription_Create (0);
00455 GAT_TEST (NULL != hw_desc);
00456
00457
00458 GATHardwareResourceDescription_AddResourceAttribute_float (hw_desc, "memory.size", 0.256f);
00459 GATHardwareResourceDescription_AddResourceAttribute_float (hw_desc, "memory.accesstime", 2e-9f);
00460 GATHardwareResourceDescription_AddResourceAttribute_float (hw_desc, "memory.str", 0.1f);
00461 GATHardwareResourceDescription_AddResourceAttribute_String (hw_desc, "machine.type", "some_machine_type");
00462 GATHardwareResourceDescription_AddResourceAttribute_String (hw_desc, "machine.node", "some_machine_nodename");
00463
00464 GAT_TEST_STOP ();
00465
00466 return hw_desc;
00467 }
00468