00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 static const char *rcsid = "$Header: /export/cvs-gridlab/wp-1/Codes/GATEngine/C-reference/test/simple/logicalfile_replicate_tests.c,v 1.10 2004/04/20 17:04:59 hartmutkaiser Exp $";
00020
00021
00022
00023 #include <stdio.h>
00024 #include <stdlib.h>
00025 #include <string.h>
00026
00027
00028
00029 #include <GAT.h>
00030 #include <GATTestUtils.h>
00031
00032
00033
00034
00035
00036
00037 static GATResult
00038 Listener_FileReplicated(void *data, GATMetricEvent event);
00039
00040
00041 static GATStaticMetric metric_data = {
00042
00043 "logicalfile.file_replicated",
00044 GATMeasurementType_EventLike,
00045 GATType_String,
00046 "",
00047 0,
00048 0
00049 };
00050
00051
00052
00053 int main (void)
00054 {
00055 GATResult retcode = GAT_SUCCESS;
00056 GATContext context = NULL;
00057 GATLocation target = NULL;
00058 GATLocation replicate_to = NULL;
00059 GATLocation storeloc = NULL;
00060 GATLogicalFile filestore = NULL;
00061 GATMetric metric = NULL;
00062 GATuint32 cookie = 0;
00063 const char* store = NULL;
00064 const char* rep = NULL;
00065
00066 GAT_TEST_INIT (-1);
00067 GAT_TEST_SUITE ("Logical File")
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 GAT_TEST_START ("Logical File Replica Test")
00077
00078 rep = GATTest_GetTempFileName ("gat_replica");
00079 GAT_TEST_TRACE (NULL != rep, context);
00080
00081 replicate_to = GATLocation_Create (rep);
00082 GAT_TEST_TRACE (NULL != replicate_to, context);
00083
00084 store = GATTest_GetTempFileName ("gat_store");
00085 GAT_TEST_TRACE (NULL != store, context);
00086
00087 storeloc = GATLocation_Create (store);
00088 GAT_TEST_TRACE (NULL != storeloc, context);
00089
00090 filestore = GATLogicalFile_Create (context, storeloc, GATLogicalFileMode_Open, 0);
00091 GAT_TEST_TRACE (NULL != filestore, context);
00092
00093
00094 retcode = GATMetric_CreateMetric (&metric_data, &metric);
00095 GAT_TEST_TRACE (GAT_SUCCESS == retcode, context);
00096 GAT_TEST_TRACE (NULL != metric, context);
00097
00098 retcode = GATMonitorable_AddMetricListener (GATLogicalFile_ToGATObject (filestore),
00099 Listener_FileReplicated,
00100 (void *)rep, metric, &cookie);
00101 GAT_TEST_TRACE (GAT_SUCCESS == retcode, context);
00102 GAT_TEST_TRACE (0 != cookie, context);
00103
00104 retcode = GATLogicalFile_Replicate(filestore, replicate_to);
00105 GAT_TEST_TRACE (GAT_SUCCESS == retcode, context);
00106
00107 retcode = GATMonitorable_RemoveRegisteredMetric (GATLogicalFile_ToGATObject (filestore),
00108 metric, cookie);
00109 GAT_TEST_TRACE (GAT_SUCCESS == retcode, context);
00110
00111 GAT_TEST_STOP ();
00112
00113 GATMetric_Destroy (&metric);
00114 GATLogicalFile_Destroy (&filestore);
00115 GATLocation_Destroy (&target);
00116 GATLocation_Destroy (&replicate_to);
00117 GATContext_Destroy (&context);
00118
00119 GAT_TEST_FINISH();
00120
00121 return (retcode);
00122 }
00123
00124
00125 static GATResult
00126 Listener_FileReplicated (void *data, GATMetricEvent event)
00127 {
00128 char name[1024] = "";
00129 int retval = GAT_FAIL;
00130 GATType type = GATType_NoType;
00131
00132 GAT_TEST_START ("Listener_FileReplicated");
00133
00134 type = GATMetricEvent_GetValueType(event);
00135 GAT_TEST (type);
00136
00137 retval = GATMetricEvent_GetValue (event, name, sizeof (name));
00138 GAT_TEST (GAT_SUCCESS == retval);
00139 GAT_TEST (GATType_String == type);
00140 GAT_TEST (!strcmp((char const *)data, name));
00141
00142 GAT_TEST_STOP ();
00143
00144 return (GAT_SUCCESS);
00145 }
00146