123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- #include "unistdx.h"
- #include <stdio.h>
- #include "bool.h"
- #include "xmlrpc_config.h"
- #include "xmlrpc-c/base.h"
- #include "xmlrpc-c/server.h"
- #include "xmlrpc-c/abyss.h"
- #include "xmlrpc-c/server_abyss.h"
- #include "testtool.h"
- #include "server_abyss.h"
- static xmlrpc_call_processor myXmlProcessor;
- static void
- myXmlProcessor(xmlrpc_env * const envP ATTR_UNUSED,
- void * const processorArg ATTR_UNUSED,
- const char * const callXml ATTR_UNUSED,
- size_t const callXmlLen ATTR_UNUSED,
- TSession * const abyssSessionP ATTR_UNUSED,
- xmlrpc_mem_block ** const responseXmlPP ATTR_UNUSED) {
- printf("XML processor running\n");
- }
- static void
- testSetHandlers(TServer * const abyssServerP) {
- xmlrpc_env env;
- xmlrpc_registry * registryP;
- xmlrpc_server_abyss_handler_parms parms;
- xmlrpc_env_init(&env);
- registryP = xmlrpc_registry_new(&env);
- TEST_NO_FAULT(&env);
- TEST(registryP != NULL);
- parms.xml_processor = &myXmlProcessor;
- parms.xml_processor_arg = NULL;
- parms.xml_processor_max_stack = 512;
- parms.uri_path = "/RPC6";
- parms.chunk_response = true;
- parms.allow_origin = "*";
- xmlrpc_server_abyss_set_handler3(
- &env, abyssServerP, &parms, XMLRPC_AHPSIZE(xml_processor_arg));
- TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR); /* Parms too short */
- xmlrpc_server_abyss_set_handler3(
- &env, abyssServerP, &parms, XMLRPC_AHPSIZE(allow_origin));
- TEST_NO_FAULT(&env);
- xmlrpc_server_abyss_set_handler2(abyssServerP, "/RPC5",
- &myXmlProcessor, NULL, 512, true);
- xmlrpc_server_abyss_set_handler(&env, abyssServerP, "/RPC3", registryP);
- TEST_NO_FAULT(&env);
- xmlrpc_server_abyss_set_handlers2(abyssServerP, "/RPC4", registryP);
- xmlrpc_server_abyss_set_handlers(abyssServerP, registryP);
-
- xmlrpc_server_abyss_set_default_handler(abyssServerP);
- xmlrpc_registry_free(registryP);
- {
- xmlrpc_registry * registryP;
- registryP = xmlrpc_registry_new(&env);
- xmlrpc_server_abyss_set_handlers(abyssServerP, registryP);
- xmlrpc_registry_free(registryP);
- }
- xmlrpc_env_clean(&env);
- }
- static void
- testServerParms(void) {
- xmlrpc_server_abyss_parms parms;
- parms.config_file_name = NULL;
- parms.registryP = NULL;
- parms.port_number = 1000;
- parms.log_file_name = "/tmp/xmlrpc_logfile";
- parms.keepalive_timeout = 5;
- parms.keepalive_max_conn = 4;
- parms.timeout = 50;
- parms.dont_advertise = TRUE;
- parms.uri_path = "/RPC9";
- parms.chunk_response = TRUE;
- parms.allow_origin = "*";
- };
- static void
- testObject(void) {
- xmlrpc_env env;
- xmlrpc_server_abyss_parms parms;
- xmlrpc_server_abyss_t * serverP;
- xmlrpc_registry * registryP;
- xmlrpc_server_abyss_sig * oldHandlersP;
- xmlrpc_env_init(&env);
- registryP = xmlrpc_registry_new(&env);
- TEST_NO_FAULT(&env);
- parms.config_file_name = NULL;
- parms.registryP = registryP;
- serverP = NULL;
- xmlrpc_server_abyss_create(&env, &parms, XMLRPC_APSIZE(registryP),
- &serverP);
- TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR); /* Global init not done */
- xmlrpc_server_abyss_global_init(&env);
- TEST_NO_FAULT(&env);
- xmlrpc_server_abyss_create(&env, &parms, XMLRPC_APSIZE(registryP),
- &serverP);
- TEST_NO_FAULT(&env);
- TEST(serverP != NULL);
- xmlrpc_server_abyss_terminate(&env, serverP);
- TEST_NO_FAULT(&env);
- xmlrpc_server_abyss_reset_terminate(&env, serverP);
- TEST_NO_FAULT(&env);
- xmlrpc_server_abyss_setup_sig(&env, serverP, &oldHandlersP);
- TEST_NO_FAULT(&env);
- xmlrpc_server_abyss_use_sigchld(serverP);
-
- xmlrpc_server_abyss_restore_sig(oldHandlersP);
- TEST_NO_FAULT(&env);
- free(oldHandlersP);
- xmlrpc_server_abyss_destroy(serverP);
-
- xmlrpc_registry_free(registryP);
- xmlrpc_server_abyss_global_term();
- xmlrpc_server_abyss_setup_sig(&env, serverP, &oldHandlersP);
- TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR); /* Not globally initialized */
- xmlrpc_env_clean(&env);
- }
- void
- test_server_abyss(void) {
- TServer abyssServer;
- printf("Running Abyss XML-RPC server tests...\n");
- ServerCreate(&abyssServer, "testserver", 8080, NULL, NULL);
-
- testSetHandlers(&abyssServer);
- ServerSetKeepaliveTimeout(&abyssServer, 60);
- ServerSetKeepaliveMaxConn(&abyssServer, 10);
- ServerSetTimeout(&abyssServer, 0);
- ServerSetAdvertise(&abyssServer, FALSE);
- ServerFree(&abyssServer);
- testServerParms();
- testObject();
- printf("\n");
- printf("Abyss XML-RPC server tests done.\n");
- }
|