From 867304f3bcbd5bfe5c5fef8c2c10f490e75163e5 Mon Sep 17 00:00:00 2001 From: Angie Byron <webchick@24967.no-reply.drupal.org> Date: Wed, 17 Sep 2008 16:49:41 +0000 Subject: [PATCH] #307477 by clemens.tolboom and boombatower: Test how XML-RPC responds to large messages. --- modules/simpletest/tests/xmlrpc.test | 34 +++++++++++++++++++++ modules/simpletest/tests/xmlrpc_test.module | 31 +++++++++++++++++-- 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/modules/simpletest/tests/xmlrpc.test b/modules/simpletest/tests/xmlrpc.test index a2a1eee060ab..db35c79ed765 100644 --- a/modules/simpletest/tests/xmlrpc.test +++ b/modules/simpletest/tests/xmlrpc.test @@ -126,3 +126,37 @@ class XMLRPCValidator1IncTestCase extends DrupalWebTestCase { $this->assertEqual($a_l_res, $a_r_res, 'multicall equals result'); } } + +class XMLRPCMessagesTestCase extends DrupalWebTestCase { + /** + * Implementation of getInfo(). + */ + function getInfo() { + return array( + 'name' => t('XML-RPC message'), + 'description' => t('Test large messages.'), + 'group' => t('XML-RPC'), + ); + } + + /** + * Implementation of setUp(). + */ + function setUp() { + parent::setUp('xmlrpc_test'); + } + + /** + * Make sure that XML-RPC can transfer large messages. + */ + function testSizedMessages() { + $xml_url = url(NULL, array('absolute' => TRUE)) . 'xmlrpc.php'; + $sizes = array(8, 80, 160); + foreach ($sizes as $size) { + $xml_message_l = xmlrpc_test_message_sized_in_kb($size); + $xml_message_r = xmlrpc($xml_url, 'messages.messageSizedInKB', $size); + + $this->assertEqual($xml_message_l, $xml_message_r, t('XML-RPC messages.messageSizedInKB of %s Kb size received', array('%s' => $size))); + } + } +} diff --git a/modules/simpletest/tests/xmlrpc_test.module b/modules/simpletest/tests/xmlrpc_test.module index 3534a7266037..132171742326 100644 --- a/modules/simpletest/tests/xmlrpc_test.module +++ b/modules/simpletest/tests/xmlrpc_test.module @@ -18,7 +18,7 @@ function xmlrpc_test_countTheEntities($string) { 'ctAmpersands' => substr_count($string, '&'), 'ctApostrophes' => substr_count($string, "'"), 'ctQuotes' => substr_count($string, '"'), - ); + ); } function xmlrpc_test_easyStructTest($array) { @@ -58,5 +58,32 @@ function xmlrpc_test_xmlrpc() { 'validator1.manyTypesTest' => 'xmlrpc_test_manyTypesTest', 'validator1.moderateSizeArrayCheck' => 'xmlrpc_test_moderateSizeArrayCheck', 'validator1.nestedStructTest' => 'xmlrpc_test_nestedStructTest', - 'validator1.simpleStructReturnTest' => 'xmlrpc_test_simpleStructReturnTest'); + 'validator1.simpleStructReturnTest' => 'xmlrpc_test_simpleStructReturnTest', + 'messages.messageSizedInKB' => 'xmlrpc_test_message_sized_in_kb', + ); +} + +/** + * Created a message of the desired size in KB. + * + * @param $size + * Message size in KB. + * @return array + * Generated message structure. + */ +function xmlrpc_test_message_sized_in_kb($size) { + $message = array(); + + $word = 'abcdefg'; + + // Create a ~1KB sized struct. + for ($i = 0 ; $i < 128; $i++) { + $line['word_' . $i] = $word; + } + + for($i = 0; $i < $size; $i++) { + $message['line_' . $i] = $line; + } + + return $message; } -- GitLab