[Openais] openais trunk - modify ckpt-wr to work properly

Ryan O'Hara rohara at redhat.com
Mon Mar 29 15:12:12 PDT 2010


Ack.

On Thu, Mar 25, 2010 at 11:52:25AM -0700, Steven Dake wrote:
> Ryan,
> 
> This test case doesn't work properly when it is built.
> 
> See attached patch.
> 
> Regards
> -steve

> Index: test/ckpt-wr.c
> ===================================================================
> --- test/ckpt-wr.c	(revision 2124)
> +++ test/ckpt-wr.c	(working copy)
> @@ -50,54 +50,23 @@
>  
>  #define SECONDS_TO_EXPIRE 500
>  
> -int ckptinv;
> -void printSaNameT (SaNameT *name)
> -{
> -	int i;
> +static SaVersionT version = { 'B', 1, 1 };
>  
> -	for (i = 0; i < name->length; i++) {
> -		printf ("%c", name->value[i]);
> -	}
> -}
> +static SaNameT checkpointName = { 16, "checkpoint-sync\0" };
>  
> -SaVersionT version = { 'B', 1, 1 };
> -
> -SaNameT checkpointName = { 16, "checkpoint-sync\0" };
> -
> -SaCkptCheckpointCreationAttributesT checkpointCreationAttributes = {
> +static SaCkptCheckpointCreationAttributesT checkpointCreationAttributes = {
>  	.creationFlags =        SA_CKPT_WR_ALL_REPLICAS,
>  	.checkpointSize =       250000,
>  	.retentionDuration =    SA_TIME_ONE_SECOND * 60,
> -	.maxSections =          5,
> +	.maxSections =          1,
>  	.maxSectionSize =       250000,
>  	.maxSectionIdSize =     10
>  };
>  
> -char readBuffer1[1025];
> -
> -SaCkptIOVectorElementT ReadVectorElements[] = {
> -	{
> -		SA_CKPT_DEFAULT_SECTION_ID,
> -		readBuffer1,
> -		sizeof (readBuffer1),
> -		0,
> -		0
> -	}
> -};
> -
>  #define DATASIZE 127000
>  char data[DATASIZE];
> -SaCkptIOVectorElementT WriteVectorElements[] = {
> -	{
> -		SA_CKPT_DEFAULT_SECTION_ID,
> -		data, /*"written data #1, this should extend past end of old section data", */
> -		DATASIZE, /*sizeof ("data #1, this should extend past end of old section data") + 1, */
> -		0, //5,
> -		0
> -	}
> -};
>  
> -SaCkptCallbacksT callbacks = {
> +static SaCkptCallbacksT callbacks = {
>   	0,
>  	0
>  };
> @@ -108,7 +77,6 @@
>  	SaCkptHandleT ckptHandle;
>  	SaCkptCheckpointHandleT checkpointHandle;
>  	SaAisErrorT error;
> -	char data[MAX_DATA_SIZE];
>  	struct timespec delay;
>  	struct timespec delay2;
>  	SaCkptIOVectorElementT writeElement;
> @@ -121,55 +89,39 @@
>  	error = saCkptInitialize (&ckptHandle, &callbacks, &version);
>  
>  	error = saCkptCheckpointOpen (ckptHandle,
> -			&checkpointName,
> -			&checkpointCreationAttributes,
> -			SA_CKPT_CHECKPOINT_CREATE|SA_CKPT_CHECKPOINT_READ|SA_CKPT_CHECKPOINT_WRITE,
> -			0,
> -			&checkpointHandle);
> +		&checkpointName,
> +		&checkpointCreationAttributes,
> +		SA_CKPT_CHECKPOINT_CREATE|SA_CKPT_CHECKPOINT_READ|SA_CKPT_CHECKPOINT_WRITE,
> +		0,
> +		&checkpointHandle);
> +
>  	printf ("%s: initial open of checkpoint\n",
>  		get_test_output (error, SA_AIS_OK));
>  
>  
> -    do{
> -			error = saCkptCheckpointRead (checkpointHandle,
> -				ReadVectorElements,
> -				1,
> -				&erroroneousVectorIndex);
> -			if (error != SA_AIS_OK) {
> -				if (error == SA_AIS_ERR_TRY_AGAIN) {
> -					continue;
> -				}
> -printf ("error is %d\n", error);
> -				return (0);
> -			}
> +	for (;;) {
> +		count++;
> +		sprintf((char*)&data, "%d",(int)count);
> +		writeElement.sectionId.idLen = 0;
> +		writeElement.sectionId.id = 0;
> +		writeElement.dataBuffer = data;
> +		writeElement.dataSize = strlen (data) + 1;
> +		writeElement.dataOffset = 0;
> +		writeElement.readSize = 0;
>  
> -			if (ReadVectorElements->dataBuffer == 0) {
> -				printf ("Default Checkpoint has no data\n");
> -			} else {
> -				count = atol((char *)ReadVectorElements->dataBuffer);
> -			}
> +		do {
> +			error = saCkptCheckpointWrite (checkpointHandle,
> +			&writeElement,
> +			1,
> +			&erroroneousVectorIndex);
>  
> -			count++;
> -			sprintf((char*)&data, "%d",(int)count);
> -			writeElement.sectionId = (SaCkptSectionIdT)SA_CKPT_DEFAULT_SECTION_ID;
> -			writeElement.dataBuffer = data;
> -			writeElement.dataSize = strlen (data) + 1;
> -			writeElement.dataOffset = 0;
> -			writeElement.readSize = 0;
> +			printf ("%s: checkpoint write with data %s\n",
> +			get_test_output (error, SA_AIS_OK), (char*)data);
> +		} while (error == SA_AIS_ERR_TRY_AGAIN);
>  
> -			do {
> -				error = saCkptCheckpointWrite (checkpointHandle,
> -					&writeElement,
> -					1,
> -					&erroroneousVectorIndex);
> +		nanosleep(&delay,&delay2);
> +	}
>  
> -				printf ("%s: checkpoint write with data %s\n",
> -							get_test_output (error, SA_AIS_OK), (char*)data);
> -			}while (error == SA_AIS_ERR_TRY_AGAIN);
> -
> -			nanosleep(&delay,&delay2);
> -	}while (1);
> -
>  	return (0);
>  
>  }

> _______________________________________________
> Openais mailing list
> Openais at lists.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/openais


More information about the Openais mailing list