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_getfiles_tests.c

Go to the documentation of this file.
00001 /** @file logicalfile_getfiles.c
00002  *  Example of using the GAT to list the physical files associated with a 
00003  *  logical file store.
00004  * 
00005  *  Uses the GAT to list all files inside a GATLogicalFile.
00006  * 
00007  *  @date Mon Oct 20 2003
00008  * 
00009  *  @version $Header: /export/cvs-gridlab/wp-1/Codes/GATEngine/C-reference/test/simple/logicalfile_getfiles_tests.c,v 1.9 2004/04/20 17:04:59 hartmutkaiser Exp $
00010  *
00011  *  Copyright (C) Hartmut Kaiser
00012  *  This file is part of the GAT Engine.
00013  *  Contributed by Hartmut Kaiser <hartmutkaiser [at] t-online [dot] de>.
00014  *
00015  *  Use, modification and distribution is subject to the Gridlab Software
00016  *  License. (See accompanying file GLlicense.txt or copy at
00017  *  http://www.gridlab.org/GLlicense.txt)
00018  */
00019 
00020 static const char *rcsid = "$Header: /export/cvs-gridlab/wp-1/Codes/GATEngine/C-reference/test/simple/logicalfile_getfiles_tests.c,v 1.9 2004/04/20 17:04:59 hartmutkaiser Exp $";
00021 
00022 /* System Header Files */
00023 
00024 #include <stdio.h>
00025 #include <stdlib.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 
00038 /* File scope variables */
00039 
00040 /* External functions */
00041 
00042 int main (void)
00043 {
00044   GATResult       retcode   = GAT_SUCCESS;
00045   GATContext      context   = NULL;
00046   GATLogicalFile  filestore = NULL;
00047   GATLocation     logfile   = NULL;
00048   GATList_GATFile files     = NULL;
00049   const char*     store     = NULL;
00050   GATList_GATFile_Iterator_const it = NULL;
00051   GATList_GATFile_Iterator_const end = NULL;
00052   
00053   GAT_TEST_INIT  (-1);
00054   GAT_TEST_SUITE ("Logical File")
00055 
00056   context = GATContext_Create ();
00057   GAT_TEST (NULL != context);
00058 
00059   /* the following test makes sure, that there were no errors during the 
00060      creation of the GATContext object */
00061   GAT_TEST_TRACE(GATType_GATContext == GATContext_GetType(context), context);
00062 
00063   GAT_TEST_START ("Logical File GetFile Test")
00064 
00065   store = GATTest_GetTempFileName ("gat_store");
00066   GAT_TEST_TRACE (NULL != store, context);
00067 
00068   logfile = GATLocation_Create (store);
00069   GAT_TEST_TRACE (NULL != logfile, context);
00070 
00071   filestore = GATLogicalFile_Create(context, logfile, GATLogicalFileMode_Open, 0);
00072   GAT_TEST_TRACE (NULL != filestore, context);
00073   
00074   retcode = GATLogicalFile_GetFiles (filestore, &files);
00075   GAT_TEST_TRACE (GAT_SUCCESS == retcode, context);
00076 
00077   it = GATList_GATFile_Begin (files);
00078   end = GATList_GATFile_End   (files);
00079     
00080   // printf("The following physical files are associated with the logical file"
00081   //        " store '%s':\n", store);
00082       
00083   for ( /**/; it != end; it = GATList_GATFile_Next (it) )
00084   {
00085     GATLocation_const location = NULL;
00086     char *name = NULL;
00087     GATFile  *file = GATList_GATFile_Get(it);
00088     GAT_TEST_TRACE (NULL != file, context);
00089 
00090     location = GATFile_GetLocation(*file);
00091     GAT_TEST_TRACE (NULL != location, context);
00092 
00093     name = GATLocation_ToString (location);
00094     GAT_TEST_TRACE (NULL != name, context);
00095       
00096     printf ("\t --> %s\n", name);
00097     free (name);
00098   }
00099   
00100   GAT_TEST_STOP ();
00101   
00102   GATList_GATFile_Destroy (&files);
00103   GATLogicalFile_Destroy  (&filestore);
00104   GATLocation_Destroy     (&logfile);
00105   GATContext_Destroy      (&context);
00106 
00107   GAT_TEST_FINISH();
00108   
00109   return (retcode);
00110 }
00111