Back to home page

Enduro/X

 
 

    


0001 /**
0002  * @brief Typed CARRAY testing
0003  *
0004  * @file atmiclt23.c
0005  */
0006 /* -----------------------------------------------------------------------------
0007  * Enduro/X Middleware Platform for Distributed Transaction Processing
0008  * Copyright (C) 2009-2016, ATR Baltic, Ltd. All Rights Reserved.
0009  * Copyright (C) 2017-2023, Mavimax, Ltd. All Rights Reserved.
0010  * This software is released under one of the following licenses:
0011  * AGPL (with Java and Go exceptions) or Mavimax's license for commercial use.
0012  * See LICENSE file for full text.
0013  * -----------------------------------------------------------------------------
0014  * AGPL license:
0015  *
0016  * This program is free software; you can redistribute it and/or modify it under
0017  * the terms of the GNU Affero General Public License, version 3 as published
0018  * by the Free Software Foundation;
0019  *
0020  * This program is distributed in the hope that it will be useful, but WITHOUT ANY
0021  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
0022  * PARTICULAR PURPOSE. See the GNU Affero General Public License, version 3
0023  * for more details.
0024  *
0025  * You should have received a copy of the GNU Affero General Public License along 
0026  * with this program; if not, write to the Free Software Foundation, Inc.,
0027  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0028  *
0029  * -----------------------------------------------------------------------------
0030  * A commercial use license is available from Mavimax, Ltd
0031  * contact@mavimax.com
0032  * -----------------------------------------------------------------------------
0033  */
0034 #include <string.h>
0035 #include <stdio.h>
0036 #include <stdlib.h>
0037 #include <memory.h>
0038 
0039 #include <atmi.h>
0040 #include <ubf.h>
0041 #include <ndebug.h>
0042 #include <test.fd.h>
0043 #include <ndrstandard.h>
0044 #include "test023.h"
0045 
0046 /*---------------------------Externs------------------------------------*/
0047 /*---------------------------Macros-------------------------------------*/
0048 /*---------------------------Enums--------------------------------------*/
0049 /*---------------------------Typedefs-----------------------------------*/
0050 /*---------------------------Globals------------------------------------*/
0051 /*---------------------------Statics------------------------------------*/
0052 /*---------------------------Prototypes---------------------------------*/
0053 
0054 /*
0055  * Do the test call to the server
0056  */
0057 int main(int argc, char** argv) {
0058 
0059     long rsplen;
0060     int i, j;
0061     int ret=EXSUCCEED;
0062     char *buf = tpalloc("CARRAY", NULL, 100);
0063     
0064     if (NULL==buf)
0065     {
0066         NDRX_LOG(log_error, "TESTERROR: failed to alloc CARRAY buffer!");
0067         EXFAIL_OUT(ret);
0068     }
0069 
0070     for (j=0; j<10000; j++)
0071     {
0072         for (i=0; i<TEST_REQ_SIZE; i++)
0073         {
0074             buf[i] = i;
0075         }
0076 
0077         if (EXSUCCEED!=tpcall("TEST23_CARRAY", buf, TEST_REQ_SIZE, &buf, &rsplen, 0))
0078         {
0079             NDRX_LOG(log_error, "TESTERROR: failed to call TEST23_CARRAY");
0080             EXFAIL_OUT(ret);
0081         }
0082 
0083         NDRX_LOG(log_debug, "Got message [%s] ", buf);
0084 
0085         /* Check the len */
0086         if (TEST_REPLY_SIZE!=rsplen)
0087         {
0088             NDRX_LOG(log_error, "TESTERROR: Invalid message len for [%s] got: %d, "
0089                     "but need: %d ", buf, strlen(buf), TEST_REPLY_SIZE);
0090         }
0091 
0092         for (i=0; i<TEST_REPLY_SIZE; i++)
0093         {
0094             if (((char)buf[i])!=((char)(i%256)))
0095             {
0096                 NDRX_LOG(log_error, "TESTERROR: Invalid char at %d, "
0097                         "expected: 0x%1x, but got 0x%1x", i, 
0098                         (unsigned char)buf[i], (unsigned char)(i%256));
0099             }
0100         }
0101 
0102         strcpy(buf, "Hello Enduro/X from Mars");
0103 
0104         ret=tppost("TEST23EV", buf, strlen(buf), TPSIGRSTRT);
0105 
0106         if (1!=ret)
0107         {
0108             NDRX_LOG(log_error, "TESTERROR: Event is not processed by "
0109                     "exactly 1 service! (%d) ", ret);
0110             ret=EXFAIL;
0111             goto out;
0112         }
0113         /* Realloc to some more... */
0114         if (NULL== (buf = tprealloc(buf, 2048)))
0115         {
0116             NDRX_LOG(log_error, "TESTERROR: failed "
0117                     "to realloc the buffer");
0118         }
0119         
0120     }
0121     
0122 out:
0123 
0124     if (ret>=0)
0125         ret=EXSUCCEED;
0126 
0127     return ret;
0128 }
0129 
0130 /* vim: set ts=4 sw=4 et smartindent: */