Back to home page

Enduro/X

 
 

    


0001 /**
0002  * @brief Typed STRING testing
0003  *
0004  * @file atmiclt22.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 "test022.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("STRING", NULL, 30);
0063     
0064     if (NULL==buf)
0065     {
0066         NDRX_LOG(log_error, "TESTERROR: failed to alloc STRING buffer!");
0067         EXFAIL_OUT(ret);
0068     }
0069 
0070     for (j=0; j<10000; j++)
0071     {
0072         strcpy(buf, "HELLO WORLD");
0073 
0074         if (EXSUCCEED!=tpcall("TEST22_STRING", buf, 0, &buf, &rsplen, 0))
0075         {
0076             NDRX_LOG(log_error, "TESTERROR: failed to call TEST22_STRING");
0077             EXFAIL_OUT(ret);
0078         }
0079 
0080         NDRX_LOG(log_debug, "Got message [%s] ", buf);
0081 
0082         /* Check the len */
0083         if (TEST_REPLY_SIZE!=strlen(buf))
0084         {
0085             NDRX_LOG(log_error, "TESTERROR: Invalid message len for [%s] got: %d, "
0086                     "but need: %d ", buf, strlen(buf), TEST_REPLY_SIZE);
0087         }
0088 
0089         for (i=0; i<TEST_REPLY_SIZE; i++)
0090         {
0091             if (((char)buf[i])!=((char)(i%255+1)))
0092             {
0093                 NDRX_LOG(log_error, "TESTERROR: Invalid char at %d, "
0094                         "expected: 0x%1x, but got 0x%1x", i, 
0095                         (unsigned char)buf[i], (unsigned char)(i%255+1));
0096             }
0097         }
0098 
0099         if (EXEOS!=buf[TEST_REPLY_SIZE])
0100         {
0101             NDRX_LOG(log_error, "TESTERROR: Not EOS!");
0102         }
0103 
0104         strcpy(buf, "Hello Enduro/X from Mars");
0105 
0106         ret=tppost("TEST22EV", buf, 0L, TPSIGRSTRT);
0107 
0108         if (1!=ret)
0109         {
0110             NDRX_LOG(log_error, "TESTERROR: Event is not processed by "
0111                     "exactly 1 service! (%d) ", ret);
0112             ret=EXFAIL;
0113             goto out;
0114         }
0115         
0116         /* Realloc to some more... */
0117         if (NULL== (buf = tprealloc(buf, 2048)))
0118         {
0119             NDRX_LOG(log_error, "TESTERROR: failed "
0120                     "to realloc the buffer");
0121         }
0122         
0123     }
0124     
0125 out:
0126 
0127     if (ret>=0)
0128         ret=EXSUCCEED;
0129 
0130     return ret;
0131 }
0132 
0133 /* vim: set ts=4 sw=4 et smartindent: */