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/file_copy_tests.c,v 1.12 2004/04/20 12:43:02 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_FileCopied (void *data, GATMetricEvent event);
00039
00040
00041 static GATStaticMetric metric_data = {
00042
00043 "fileops.file_copied",
00044 GATMeasurementType_EventLike,
00045 GATType_String,
00046 "",
00047 0,
00048 0
00049 };
00050
00051
00052
00053 int main (void)
00054 {
00055 GATResult retcode = GAT_FAIL;
00056 GATContext context = NULL;
00057 GATLocation source = NULL;
00058 GATLocation target = NULL;
00059 GATMetric metric = NULL;
00060 GATFile file = NULL;
00061 GATuint32 cookie = 0;
00062 const char* src = NULL;
00063 const char* dst = NULL;
00064
00065 GAT_TEST_INIT (-1);
00066 GAT_TEST_SUITE ("File")
00067
00068 context = GATContext_Create();
00069 GAT_TEST(NULL != context);
00070
00071
00072
00073 GAT_TEST_TRACE(GATType_GATContext == GATContext_GetType(context), context);
00074
00075 GAT_TEST_START ("File Copy Test");
00076
00077 src = GATTest_CreateTempFile ("gat_src");
00078 GAT_TEST_TRACE(NULL != src, context);
00079
00080 source = GATLocation_Create (src);
00081 GAT_TEST_TRACE(NULL != source, context);
00082
00083 dst = GATTest_GetTempFileName ("gat_dst");
00084 GAT_TEST_TRACE(NULL != dst, context);
00085
00086 target = GATLocation_Create (dst);
00087 GAT_TEST_TRACE(NULL != target, context);
00088
00089 file = GATFile_Create (context, source, NULL);
00090 GAT_TEST_TRACE(NULL != file, context);
00091
00092
00093 retcode = GATMetric_CreateMetric (&metric_data, &metric);
00094 GAT_TEST_TRACE(GAT_SUCCESS == retcode, context);
00095
00096 retcode = GATMonitorable_AddMetricListener(GATFile_ToGATObject(file),
00097 Listener_FileCopied, (char*) src, metric, &cookie);
00098 GAT_TEST_TRACE(retcode == GAT_SUCCESS, context);
00099
00100 retcode = GATFile_Copy(file, target, GATFileMode_Overwrite);
00101 GAT_TEST_TRACE(retcode == GAT_SUCCESS, context);
00102
00103 retcode = GATContext_ServiceActions(context, 0);
00104 GAT_TEST_TRACE(retcode == GAT_SUCCESS, context);
00105
00106 if (0 != cookie)
00107 {
00108 retcode = GATMonitorable_RemoveRegisteredMetric(GATFile_ToGATObject(file),
00109 metric, cookie);
00110 GAT_TEST_TRACE(GAT_SUCCESS == retcode, context);
00111 }
00112
00113 GATFile_Destroy (&file);
00114 GATMetric_Destroy (&metric);
00115 GATLocation_Destroy (&source);
00116 GATLocation_Destroy (&target);
00117 GATContext_Destroy (&context);
00118
00119 GAT_TEST_STOP ();
00120 GAT_TEST_FINISH();
00121
00122 return (retcode);
00123 }
00124
00125
00126 static GATResult
00127 Listener_FileCopied(void *data, GATMetricEvent event)
00128 {
00129 int retval = GAT_FAIL;
00130 char name[1024] = { 0 };
00131 GATType type = GATType_NoType;
00132
00133 GAT_TEST_START ("Listener_FileCopied");
00134
00135 type = GATMetricEvent_GetValueType (event);
00136 GAT_TEST (type == GATType_String);
00137
00138 retval = GATMetricEvent_GetValue (event, name, sizeof (name));
00139
00140 GAT_TEST (GAT_SUCCESS == retval);
00141 GAT_TEST (GATType_String == type);
00142 GAT_TEST (!strcmp ((char const *)data, name));
00143
00144 GAT_TEST_STOP ();
00145
00146 return (GAT_SUCCESS);
00147 }
00148