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/resource_serialisation_tests.c,v 1.12 2004/04/28 10:55:51 hartmutkaiser Exp $";
00018
00019
00020
00021 #include <stdio.h>
00022 #include <stdlib.h>
00023 #include <sys/utsname.h>
00024
00025
00026
00027 #include "GAT.h"
00028 #include "GATTestUtils.h"
00029
00030 #include "GATMemoryStream.h"
00031
00032
00033
00034
00035
00036
00037 static GATResourceDescription
00038 create_hardware_resource_description(GATContext context);
00039
00040 static GATResult
00041 verify_direct_serialisation(GATContext context, GATResource resource);
00042 static GATResult
00043 verify_generic_serialisation(GATContext context, GATResource resource);
00044
00045
00046
00047
00048
00049 int main (void)
00050 {
00051 GATResult retval = GAT_FAIL;
00052 GATContext context = NULL;
00053 GATList_GATResource resources = NULL;
00054 GATResourceDescription hrd = NULL;
00055 GATResourceBroker broker = NULL;
00056 GATResource *resource = NULL;
00057 GATList_GATResource_Iterator first = NULL;
00058
00059 GAT_TEST_INIT (-1);
00060 GAT_TEST_SUITE ("Resource Serialization");
00061
00062 context = GATContext_Create();
00063 GAT_TEST (NULL != context);
00064
00065
00066
00067 GAT_TEST_TRACE(GATType_GATContext == GATContext_GetType(context), context);
00068
00069 GAT_TEST_START ("Resource Serialization Tests");
00070
00071
00072
00073 hrd = create_hardware_resource_description (context);
00074 GAT_TEST_TRACE(NULL != hrd, context);
00075
00076
00077 broker = GATResourceBroker_Create (context, 0, 0);
00078 GAT_TEST_TRACE(NULL != broker, context);
00079
00080 retval = GATResourceBroker_FindResources (broker, hrd, &resources);
00081 GAT_TEST_TRACE(GAT_SUCCEEDED(retval), context);
00082 GAT_TEST_TRACE(1 == GATList_GATResource_Size (resources), context);
00083
00084
00085 first = GATList_GATResource_Begin (resources);
00086 GAT_TEST_TRACE(NULL != first, context)
00087
00088 resource = GATList_GATResource_Get (first);
00089 GAT_TEST_TRACE(NULL != resource, context)
00090
00091 GAT_TEST_STOP ();
00092
00093
00094 retval = verify_direct_serialisation (context, *resource);
00095
00096
00097 retval = verify_generic_serialisation (context, *resource);
00098
00099
00100 GATList_GATResource_Destroy (&resources);
00101 GATResourceBroker_Destroy (&broker);
00102 GATResourceDescription_Destroy (&hrd);
00103 GATContext_Destroy (&context);
00104
00105 GAT_TEST_FINISH ();
00106
00107 return (0);
00108 }
00109
00110
00111
00112
00113 static GATResult
00114 verify_direct_serialisation(GATContext context, GATResource resource)
00115 {
00116 GATResult retcode = GAT_FAIL;
00117 GATResource new_resource = NULL;
00118 GATMemoryStream stream = GATMemoryStream_Create (0, 0, GATFalse);
00119 GATBool isequal = GATFalse;
00120 char *buffer = NULL;
00121 GATuint32 buffer_size = 0;
00122
00123 GAT_TEST_START ("verify_direct_serialisation");
00124
00125 retcode = GATResource_Serialise (resource,
00126 GATMemoryStream_ToGATObject (stream),
00127 GATFalse);
00128 GAT_TEST_TRACE(GAT_SUCCEEDED(retcode), context);
00129
00130 buffer = GATMemoryStream_GetBuffer (stream, &buffer_size, GATFalse);
00131 GAT_TEST_TRACE(NULL != buffer, context);
00132 GAT_TEST_TRACE(buffer_size > 0, context);
00133
00134
00135 GATMemoryStream_Seek (stream, GATOrigin_Set, 0, 0);
00136
00137 new_resource = GATResource_DeSerialise (context,
00138 GATMemoryStream_ToGATObject (stream),
00139 &retcode);
00140 GAT_TEST_TRACE(GAT_SUCCEEDED(retcode), context);
00141 GAT_TEST_TRACE(NULL != new_resource, context);
00142
00143 retcode = GATResource_Equals (resource, new_resource, &isequal);
00144 GAT_TEST_TRACE(GAT_SUCCEEDED(retcode), context);
00145 GAT_TEST_TRACE(GATTrue == isequal, context);
00146
00147 GATResource_Destroy (&new_resource);
00148 GATMemoryStream_Destroy (&stream);
00149
00150 GAT_TEST_TRACE(GAT_SUCCEEDED(retcode), context);
00151
00152 GAT_TEST_STOP ();
00153
00154 return retcode;
00155 }
00156
00157
00158 static GATResult
00159 verify_generic_serialisation (GATContext context, GATResource resource)
00160 {
00161 GATResult retcode = GAT_FAIL;
00162 GATResource new_resource = NULL;
00163 GATMemoryStream stream = GATMemoryStream_Create (0, 0, GATFalse);
00164 GATBool isequal = GATFalse;
00165 char *buffer = NULL;
00166 GATuint32 buffer_size = 0;
00167
00168 GAT_TEST_START ("verify_generic_serialisation");
00169
00170 retcode = GATSerialisable_Serialise (GATResource_ToGATObject (resource),
00171 GATMemoryStream_ToGATObject(stream),
00172 GATTrue);
00173 GAT_TEST_TRACE(GAT_SUCCEEDED(retcode), context);
00174
00175 buffer = GATMemoryStream_GetBuffer(stream, &buffer_size, GATFalse);
00176 GAT_TEST_TRACE(NULL != buffer, context);
00177 GAT_TEST_TRACE(buffer_size > 0, context);
00178
00179
00180 GATMemoryStream_Seek (stream, GATOrigin_Set, 0, 0);
00181
00182 new_resource = (GATResource) GATSerialisable_DeSerialise
00183 (context,
00184 GATMemoryStream_ToGATObject(stream),
00185 &retcode);
00186 GAT_TEST_TRACE(GAT_SUCCEEDED(retcode), context);
00187 GAT_TEST_TRACE(NULL != new_resource, context);
00188
00189 retcode = GATResource_Equals (resource, new_resource, &isequal);
00190 GAT_TEST_TRACE(GAT_SUCCEEDED(retcode), context);
00191 GAT_TEST_TRACE(GATTrue == isequal, context);
00192
00193 GATResource_Destroy (&new_resource);
00194 GATMemoryStream_Destroy (&stream);
00195
00196 GAT_TEST_TRACE(GAT_SUCCEEDED(retcode), context);
00197
00198 GAT_TEST_STOP ();
00199
00200 return retcode;
00201 }
00202
00203
00204 static GATResourceDescription
00205 create_hardware_resource_description (GATContext context)
00206 {
00207 GATHardwareResourceDescription hw_desc = NULL;
00208 GATTable requirements = NULL;
00209 struct utsname sysinfo;
00210
00211 GAT_TEST_START ("create_hardware_resource_description");
00212
00213
00214 requirements = GATTable_Create();
00215 GAT_TEST_TRACE(NULL != requirements, context);
00216
00217
00218 GAT_TEST_TRACE(uname(&sysinfo) >= 0, context);
00219
00220
00221 GATTable_Add_float (requirements, "memory.size", 0.256f);
00222 GATTable_Add_String (requirements, "machine.type", sysinfo.machine);
00223 GATTable_Add_String (requirements, "machine.node", sysinfo.nodename);
00224 GATTable_Add_String (requirements, "cpu.type", "unknown");
00225 GATTable_Add_float (requirements, "cpu.speed", 1.f);
00226 GATTable_Add_float (requirements, "disk.size", 10.f);
00227
00228
00229 hw_desc = GATHardwareResourceDescription_Create (requirements);
00230 GAT_TEST_TRACE(NULL != hw_desc, context);
00231
00232 GATTable_Destroy (&requirements);
00233
00234 GAT_TEST_STOP ();
00235
00236 return (GATHardwareResourceDescription_ToGATResourceDescription (hw_desc));
00237 }
00238