GridLab
Grid Application Toolkit

A simple API for Grid Applications
GAT

Menu



Main Page   Alphabetical List   Compound List   File List   Compound Members   File Members  

logicalfile_replicate_tests.c

Go to the documentation of this file.
00001 /** @file logicalfile_replicate.c
00002  * Example of using the GAT to replicate a logical file store to a file.
00003  * 
00004  * Uses the GAT to replicate a GATLogicalFile to a physical file.
00005  * 
00006  * @date Mon Oct 20 2003
00007  * 
00008  * @version $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 $
00009  *
00010  *  Copyright (C) Hartmut Kaiser
00011  *  This file is part of the GAT Engine.
00012  *  Contributed by Hartmut Kaiser <hartmutkaiser [at] t-online [dot] de>.
00013  *
00014  *  Use, modification and distribution is subject to the Gridlab Software
00015  *  License. (See accompanying file GLlicense.txt or copy at
00016  *  http://www.gridlab.org/GLlicense.txt)
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 /* System Header Files */
00022 
00023 #include <stdio.h>
00024 #include <stdlib.h>
00025 #include <string.h>
00026 
00027 /* GAT Header Files */
00028 
00029 #include <GAT.h>
00030 #include <GATTestUtils.h>
00031 
00032 /* Macros */
00033 
00034 /* Structures, unions and enums */
00035 
00036 /* Static function prototypes */
00037 static GATResult 
00038   Listener_FileReplicated(void *data, GATMetricEvent event);
00039 
00040 /* File scope variables */
00041 static GATStaticMetric metric_data = {
00042   /* fileops.file_copied event */
00043   "logicalfile.file_replicated",  /* name */
00044   GATMeasurementType_EventLike,   /* type */
00045   GATType_String,                 /* data type */
00046   "",                             /* unit */
00047   0,                              /* parameter count */
00048   0                               /* parameters */
00049 };
00050 
00051 /* External functions */
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   /* the following test makes sure, that there were no errors during the 
00073      creation of the GATContext object */
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   /* install the event handler */
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 /* Local functions */
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