bug-commoncpp
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Patch to add sync() method to Engine and fixes for unit tests on Lin


From: David Sugar
Subject: Re: Patch to add sync() method to Engine and fixes for unit tests on Linux
Date: Sat, 17 Jul 2004 08:59:36 -0400
User-agent: Mutt/1.5.5.1i

This one seemed to supercede the first one as it also had the same 
header fixes for persist.h and would conflict.  But I was able to apply 
this one alone and build successfully.

Chad Yates wrote:

> Flip! here it is.
> 
> Chad Yates wrote:
> 
> >Attached is a patch to the Persistence Engine and cppunit test suite:
> >
> > - Added a new sync() method to Engine using code from ~Engine.
> >
> > - Added implementations for std::string << and >> operators (was 
> >overlooked in  last patch as I was juggling 3 source trees)
> >
> > - Applies various fixes/updates to the ccxx_tests cppunit test 
> >suite.  The tests that are active, should compile and run successfully 
> >under Linux now.
> >
> >Cheers,
> >
> >Chad
> >
> 

> Index: tests/SampleObject.h
> ===================================================================
> RCS file: /cvsroot/commoncpp/commoncpp2/tests/SampleObject.h,v
> retrieving revision 1.1.6.1
> diff -u -r1.1.6.1 SampleObject.h
> --- tests/SampleObject.h      17 Jan 2004 11:51:02 -0000      1.1.6.1
> +++ tests/SampleObject.h      17 Jul 2004 04:50:45 -0000
> @@ -45,7 +45,6 @@
>  #include <iterator>
>  #include "SampleSubObject.h"
>  
> -using namespace ost;
>  using std::cout;
>  using std::endl;
>  using std::string;
> Index: tests/Test_Date.h
> ===================================================================
> RCS file: /cvsroot/commoncpp/commoncpp2/tests/Test_Date.h,v
> retrieving revision 1.3.4.1
> diff -u -r1.3.4.1 Test_Date.h
> --- tests/Test_Date.h 17 Jan 2004 11:51:02 -0000      1.3.4.1
> +++ tests/Test_Date.h 17 Jul 2004 04:50:45 -0000
> @@ -88,10 +88,13 @@
>      exp_dayofweek = 1;
>  
>      std::stringstream tmp;
> -    tmp << exp_year << std::setfill('0') << std::setw(2) << exp_month << 
> std::setw(2) << exp_day;
> +    tmp << exp_year << "-" << std::setfill('0') << std::setw(2) << exp_month 
> << "-" << std::setw(2) << exp_day;
>      exp_stringdate = tmp.str();
> -    exp_value = atoi(exp_stringdate.c_str());
> -
> +    
> +    std::stringstream tmp2;
> +    tmp2 << exp_year << std::setfill('0') << std::setw(2) << exp_month << 
> std::setw(2) << exp_day;
> +    exp_value = atoi(tmp2.str().c_str());
> +    
>      // make a ctime style datetime stamp
>         memset(&exp_dt, 0, sizeof(exp_dt));
>      exp_dt.tm_year = exp_year - 1900;  // years since 1900
> @@ -184,4 +187,3 @@
>    }
>  
>  };
> -
> Index: tests/Test_Engine.cpp
> ===================================================================
> RCS file: /cvsroot/commoncpp/commoncpp2/tests/Test_Engine.cpp,v
> retrieving revision 1.1.6.1
> diff -u -r1.1.6.1 Test_Engine.cpp
> --- tests/Test_Engine.cpp     17 Jan 2004 11:51:02 -0000      1.1.6.1
> +++ tests/Test_Engine.cpp     17 Jul 2004 04:50:45 -0000
> @@ -107,12 +107,13 @@
>    TEST_PRIMITIVE_OUTPUT(uint16, 0x0123);
>    TEST_PRIMITIVE_OUTPUT(int32, 0x01234567);
>    TEST_PRIMITIVE_OUTPUT(uint32, 0x01234567);
> -  TEST_PRIMITIVE_OUTPUT(int64, 0x0123456789ABCDEF); // warning: integer 
> constant larger than the maximum value of an unsigned long int
> -  TEST_PRIMITIVE_OUTPUT(uint64, 0x0123456789ABCDEF); // warning: integer 
> constant larger than the maximum value of an unsigned long int
> +  //TEST_PRIMITIVE_OUTPUT(int64, 0x0123456789ABCDEF); // warning: integer 
> constant larger than the maximum value of an unsigned long int
> +  //TEST_PRIMITIVE_OUTPUT(uint64, 0x0123456789ABCDEF); // warning: integer 
> constant larger than the maximum value of an unsigned long int
>    TEST_PRIMITIVE_OUTPUT(float, 3.141592653589793238462643f);
>    TEST_PRIMITIVE_OUTPUT(double, 3.141592653589793238462643);
>    TEST_PRIMITIVE_OUTPUT(string, "abcdefghijklmnopqrstuvwxyz0123456789");
>  
> +  outputEngine.sync(); // flush Engine buffers before closing file
>    outputArchive.close();
>  
>    // read primitive types back in and check
> @@ -125,8 +126,8 @@
>    TEST_PRIMITIVE_INPUT(uint16);
>    TEST_PRIMITIVE_INPUT(int32);
>    TEST_PRIMITIVE_INPUT(uint32);
> -  TEST_PRIMITIVE_INPUT(int64);
> -  TEST_PRIMITIVE_INPUT(uint64);
> +  //TEST_PRIMITIVE_INPUT(int64);
> +  //TEST_PRIMITIVE_INPUT(uint64);
>    TEST_PRIMITIVE_INPUT(float);
>    TEST_PRIMITIVE_INPUT(double);
>    TEST_PRIMITIVE_INPUT(string);
> @@ -148,6 +149,7 @@
>      binaryBuffer[i] = i;
>  
>    outputEngine.writeBinary((const uint8*) binaryBuffer, 
> sizeof(binaryBuffer));
> +  outputEngine.sync(); // flush Engine buffers before closing file
>    outputArchive.close();
>  
>    // read binary data back in and check
> @@ -180,6 +182,7 @@
>  
>    outputEngine << intVector;
>    outputEngine << *pIntVector;
> +  outputEngine.sync(); // flush Engine buffers before closing file
>    outputArchive.close();
>  
>    // read STL std::vector back in and check
> @@ -218,6 +221,7 @@
>  
>    outputEngine << intDeque;
>    outputEngine << *pIntDeque;
> +  outputEngine.sync(); // flush Engine buffers before closing file
>    outputArchive.close();
>  
>    // read STL std::deque back in and check
> @@ -256,6 +260,7 @@
>  
>    outputEngine << intMap;
>    outputEngine << *pIntMap;
> +  outputEngine.sync(); // flush Engine buffers before closing file
>    outputArchive.close();
>  
>    // read STL std::map back in and check
> @@ -282,6 +287,7 @@
>    std::fstream outputArchive("EngineComplexObjectTest.dat", 
> std::ios::out|std::ios::binary);
>    Engine outputEngine(outputArchive, ost::Engine::modeWrite);
>    outputEngine << complexObject;
> +  outputEngine.sync(); // flush Engine buffers before closing file
>    outputArchive.close();
>  
>    // Unpersist a new object structure into an uninitialized object
> @@ -321,6 +327,7 @@
>      std::fstream inputArchive("EngineComplexObjectTest.dat", std::ios::in);
>      Engine inputEngine(inputArchive, ost::Engine::modeRead);
>      inputEngine >> myObjAllocatedPtr;
> +    outputEngine.sync(); // flush Engine buffers before closing file
>      inputArchive.close();
>  
>      CPPUNIT_ASSERT_MESSAGE("Unpersisted into pre-allocated pointer", 
> *myObjAllocatedPtr == complexObject);
> Index: tests/Test_Engine.h
> ===================================================================
> RCS file: /cvsroot/commoncpp/commoncpp2/tests/Test_Engine.h,v
> retrieving revision 1.1.6.1
> diff -u -r1.1.6.1 Test_Engine.h
> --- tests/Test_Engine.h       17 Jan 2004 11:51:02 -0000      1.1.6.1
> +++ tests/Test_Engine.h       17 Jul 2004 04:50:45 -0000
> @@ -141,4 +141,3 @@
>     */
>    void testModeExceptions();
>  };
> -
> Index: tests/Test_TCPStream.h
> ===================================================================
> RCS file: /cvsroot/commoncpp/commoncpp2/tests/Test_TCPStream.h,v
> retrieving revision 1.1.6.1
> diff -u -r1.1.6.1 Test_TCPStream.h
> --- tests/Test_TCPStream.h    17 Jan 2004 11:51:02 -0000      1.1.6.1
> +++ tests/Test_TCPStream.h    17 Jul 2004 04:50:45 -0000
> @@ -68,22 +68,23 @@
>  
>    void testIsPending()
>    {
> +    /* FIXME hanging after recent changes to isPending?
>      try
> -         {
> -                 // Just connect to a port that won't send data -- doesn't 
> matter what
> -                 ost::TCPStream foo("10.0.0.5",5800,512,true,100);
> -                 for(unsigned int i = 0; i < 50 ; i++)
> -                 {
> -                         while( 
> foo.isPending(ost::Socket::pendingInput,100));
> -                 }
> -
> -        CPPUNIT_ASSERT(true);
> -         }
> -         catch( ost::Socket* s )
> -         {
> -        CPPUNIT_ASSERT_MESSAGE("Socket error", true);
> -         }
> +    {
> +      // Just connect to a port that won't send data -- doesn't matter what
> +      ost::TCPStream foo(ost::IPV4Host("10.0.0.5"),5800,512,true,100);
> +      for(unsigned int i = 0; i < 5 ; i++)
> +      {
> +        while( foo.isPending(ost::Socket::pendingInput,100));
> +      }
> +    
> +      CPPUNIT_ASSERT(true);
> +    }
> +    catch( ost::Socket* s )
> +    {
> +      CPPUNIT_ASSERT_MESSAGE("Socket error", true);
> +    }
> +    */
>    }
>    
> -};
> -
> +};
> Index: tests/Test_URLString.h
> ===================================================================
> RCS file: /cvsroot/commoncpp/commoncpp2/tests/Test_URLString.h,v
> retrieving revision 1.3.4.1
> diff -u -r1.3.4.1 Test_URLString.h
> --- tests/Test_URLString.h    17 Jan 2004 11:51:02 -0000      1.3.4.1
> +++ tests/Test_URLString.h    17 Jul 2004 04:50:45 -0000
> @@ -40,7 +40,7 @@
>  
>  #include <cppunit/extensions/HelperMacros.h>
>  #include <iostream>
> -#include <cc++/urlstring.h>
> +#include <cc++/url.h>
>  
>  using namespace ost;
>  using std::string;
> @@ -112,8 +112,8 @@
>  
>    void testStringVersion()
>    {
> -    CPPUNIT_ASSERT_EQUAL(string("VGhpcyBpcyBhIHRlc3Qu"), 
> b64Encode(string("This is a test.")));
> -    CPPUNIT_ASSERT_EQUAL(string("This is a test."), 
> b64Decode(string("VGhpcyBpcyBhIHRlc3Qu")));
> +    CPPUNIT_ASSERT_EQUAL(String("VGhpcyBpcyBhIHRlc3Qu"), 
> b64Encode(String("This is a test.")));
> +    CPPUNIT_ASSERT_EQUAL(String("This is a test."), 
> b64Decode(String("VGhpcyBpcyBhIHRlc3Qu")));
>    }
>  
>    void testTypicalTextBase64EncodeDecode()
> Index: include/cc++/persist.h
> ===================================================================
> RCS file: /cvsroot/commoncpp/commoncpp2/include/cc++/persist.h,v
> retrieving revision 1.11.4.7
> diff -u -r1.11.4.7 persist.h
> --- include/cc++/persist.h    14 Jun 2004 21:48:23 -0000      1.11.4.7
> +++ include/cc++/persist.h    17 Jul 2004 04:50:45 -0000
> @@ -46,6 +46,14 @@
>  #ifndef      CCXX_PERSIST_H_
>  #define      CCXX_PERSIST_H_
>  
> +#ifndef CCXX_CONFIG_H_
> +#include <cc++/config.h>
> +#endif
> +
> +#ifndef CCXX_EXCEPTIONS_H_
> +#include <cc++/exception.h>
> +#endif
> +
>  #ifndef CCXX_MISSING_H_
>  #include <cc++/missing.h>
>  #endif
> @@ -280,6 +288,8 @@
>        * This Flushes the buffers and closes the Persistence::Engine
>        * this must happen before the underlying stream is shut down
>        */
> +  void sync();
> +  
>       virtual ~Engine();
>  
>  
> @@ -312,7 +322,9 @@
>       void write(float i)  THROWS (Exception) { CCXX_ENGINEWRITE_REF(i); }
>       void write(double i) THROWS (Exception) { CCXX_ENGINEWRITE_REF(i); }
>  #undef CCXX_ENGINEWRITE_REF
> +
>       void write(const String& str) THROWS (Exception);
> +     void write(const std::string& str) THROWS (Exception);
>  
>       // Every write operation boils down to one or more of these
>       void writeBinary(const uint8* data, const uint32 size) THROWS 
> (Exception);
> @@ -348,6 +360,7 @@
>  #undef CCXX_ENGINEREAD_REF
>  
>       void read(String& str) THROWS (Exception);
> +     void read(std::string& str) THROWS (Exception);
>  
>       // Every read operation boild down to one or more of these
>       void readBinary(uint8* data, uint32 size) THROWS (Exception);
> @@ -465,6 +478,11 @@
>  __EXPORT Engine& operator <<( Engine& ar, String ob)  THROWS 
> (Engine::Exception);
>  
>  /** @relates Engine */
> +__EXPORT Engine& operator >>( Engine& ar, std::string& ob) THROWS 
> (Engine::Exception);
> +/** @relates Engine */
> +__EXPORT Engine& operator <<( Engine& ar, std::string ob)  THROWS 
> (Engine::Exception);
> +
> +/** @relates Engine */
>  __EXPORT Engine& operator >>( Engine& ar, bool& ob) THROWS 
> (Engine::Exception);
>  /** @relates Engine */
>  __EXPORT Engine& operator <<( Engine& ar, bool ob)  THROWS 
> (Engine::Exception);
> @@ -585,7 +603,3 @@
>   * c-basic-offset: 8
>   * End:
>   */
> -
> -
> -
> -
> Index: src/engine.cpp
> ===================================================================
> RCS file: /cvsroot/commoncpp/commoncpp2/src/engine.cpp,v
> retrieving revision 1.6.4.4
> diff -u -r1.6.4.4 engine.cpp
> --- src/engine.cpp    6 Jul 2004 21:55:05 -0000       1.6.4.4
> +++ src/engine.cpp    17 Jul 2004 04:50:45 -0000
> @@ -109,8 +109,7 @@
>  #endif
>  }
>  
> -
> -Engine::~Engine()
> +void Engine::sync()
>  {
>    // Flush compression buffers etc here.
>  #ifndef NO_COMPRESSION
> @@ -133,11 +132,17 @@
>               }
>         deflateEnd(&myZStream);
>       }
> -  delete [] myCompressedDataBuffer;
> -  delete [] myUncompressedDataBuffer;
>  #endif
>  }
>  
> +Engine::~Engine()
> +{
> +  if (myUnderlyingStream.good())
> +    sync();
> +
> +  delete [] myCompressedDataBuffer;
> +  delete [] myUncompressedDataBuffer;
> +}
>  
>  void Engine::writeBinary(const uint8* data, const uint32 size) 
>       THROWS (Engine::Exception)
> @@ -268,7 +273,7 @@
>                 uint32 classId = (uint32)myClassMap.size();
>                 myClassMap[object->getPersistenceID()] = classId;
>                 write(classId);
> -               write(object->getPersistenceID());
> +               write(static_cast<String>(object->getPersistenceID()));
>               }
>         else
>               {
> @@ -309,7 +314,7 @@
>    // we won't need it later since this object is already allocated
>    readClass();
>    
> -     // Okay then - we can read data straight into this object
> +  // Okay then - we can read data straight into this object
>    readObject(&object);
>  }
>  
> @@ -419,6 +424,30 @@
>    delete[] buffer;
>  }
>  
> +/*
> + * note, does not (yet?) throw an exception, but interface
> + * prepared ..
> + */
> +void Engine::write(const std::string& str) THROWS (Engine::Exception)
> +{
> +  assert(myOperationalMode == modeWrite);
> +  uint32 len = (uint32)str.length();
> +  write(len);
> +  writeBinary((uint8*)str.c_str(),len);
> +}
> +
> +void Engine::read(std::string& str) THROWS (Engine::Exception)
> +{
> +  assert(myOperationalMode == modeRead);
> +  uint32 len = 0;
> +  read(len);
> +  uint8 *buffer = new uint8[len+1];
> +  readBinary(buffer,len);
> +  buffer[len] = 0;
> +  str = (char*)buffer;
> +  delete[] buffer;
> +}
> +
>  #define CCXX_RE(ar,ob)   ar.read(ob); return ar
>  #define CCXX_WE(ar,ob)   ar.write(ob); return ar
>  
> @@ -462,6 +491,9 @@
>  CCXX_EXPORT(Engine&) operator >>( Engine& ar, String& ob) THROWS 
> (Engine::Exception) {CCXX_RE (ar,ob);}
>  CCXX_EXPORT(Engine&) operator <<( Engine& ar, String ob)  THROWS 
> (Engine::Exception) {CCXX_WE (ar,ob);}
>  
> +CCXX_EXPORT(Engine&) operator >>( Engine& ar, std::string& ob) THROWS 
> (Engine::Exception) {CCXX_RE (ar,ob);}
> +CCXX_EXPORT(Engine&) operator <<( Engine& ar, std::string ob)  THROWS 
> (Engine::Exception) {CCXX_WE (ar,ob);}
> +
>  CCXX_EXPORT(Engine&) operator >>( Engine& ar, bool& ob) THROWS 
> (Engine::Exception) {
>       uint32 a; ar.read(a); ob=a==1;return ar;
>  }

> _______________________________________________
> Bug-commoncpp mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/bug-commoncpp





reply via email to

[Prev in Thread] Current Thread [Next in Thread]