66
77class StringMergeTest extends \PHPUnit_Framework_TestCase
88{
9- public function memoryUsage ($ method , $ stage = '' )
10- {
11- fwrite (STDOUT , "\n" );
12- fwrite (STDOUT , $ method . ' ' . $ stage . ': ' . memory_get_peak_usage (true ) ." (peak) \n" );
13- fwrite (STDOUT , $ method . ' ' . $ stage . ': ' . memory_get_usage (true ) ." (current) \n" );
14- }
15-
16- public function log ($ string , $ newline = true )
17- {
18- fwrite (STDOUT , "\n" );
19- fwrite (STDOUT , $ string );
20-
21- if ($ newline )
22- {
23- fwrite (STDOUT , "\n" );
24- }
25- }
9+ public function memoryUsage ($ method , $ stage = '' )
10+ {
11+ fwrite (STDOUT , "\n" );
12+ fwrite (STDOUT , $ method . ' ' . $ stage . ': ' . memory_get_peak_usage (true ) ." (peak) \n" );
13+ fwrite (STDOUT , $ method . ' ' . $ stage . ': ' . memory_get_usage (true ) ." (current) \n" );
14+ }
15+
16+ public function log ($ string , $ newline = true )
17+ {
18+ fwrite (STDOUT , "\n" );
19+ fwrite (STDOUT , $ string );
20+
21+ if ($ newline ) {
22+ fwrite (STDOUT , "\n" );
23+ }
24+ }
2625
2726 public function testMerge ()
2827 {
29- $ this ->memoryUsage (__METHOD__ , '' );
28+ $ this ->memoryUsage (__METHOD__ , '' );
3029
31- $ compressedString1 = new String ();
30+ $ compressedString1 = new String ();
3231 $ content = 'My first string ' ;
3332 $ compressedString1 ->write ($ content );
3433
@@ -48,125 +47,117 @@ public function testMerge()
4847
4948 $ subject = '{"string1":"#|_|#","string2":"#|_|#","string3":"#|_|#"} ' ;
5049
51- $ mergedString = StringMerge::merge ($ subject , '#|_|# ' , $ list );
50+ $ mergedString = StringMerge::merge ($ subject , '#|_|# ' , $ list );
5251
53- $ expected = '{"string1":"My first string","string2":"My second string","string3":"My third string"} ' ;
52+ $ expected = '{"string1":"My first string","string2":"My second string","string3":"My third string"} ' ;
5453 $ this ->assertEquals ($ expected , $ mergedString ->getDecompressedContents ());
5554 }
5655
5756 public function testLargeMergeIntoString ()
5857 {
59- $ this ->memoryUsage (__METHOD__ , 'Start ' );
58+ $ this ->memoryUsage (__METHOD__ , 'Start ' );
6059
61- $ compressedString1 = new String ();
62- $ handle = fopen ('tests/files/companies_first_10.json ' , "r " );
63- if ($ handle )
64- {
65- while (($ buffer = fgets ($ handle , 4096 )) !== false )
66- {
67- $ compressedString1 ->write ($ buffer );
68- }
60+ $ compressedString1 = new String ();
61+ $ handle = fopen ('tests/files/companies_first_10.json ' , "r " );
62+ if ($ handle ) {
63+ while (($ buffer = fgets ($ handle , 4096 )) !== false ) {
64+ $ compressedString1 ->write ($ buffer );
65+ }
6966
70- fclose ($ handle );
71- }
67+ fclose ($ handle );
68+ }
7269
73- $ compressedString2 = new String ();
74- $ handle = fopen ('tests/files/companies_first_10.json ' , "r " );
75- if ($ handle )
76- {
77- while (($ buffer = fgets ($ handle , 4096 )) !== false )
78- {
79- $ compressedString2 ->write ($ buffer );
80- }
70+ $ compressedString2 = new String ();
71+ $ handle = fopen ('tests/files/companies_first_10.json ' , "r " );
72+ if ($ handle ) {
73+ while (($ buffer = fgets ($ handle , 4096 )) !== false ) {
74+ $ compressedString2 ->write ($ buffer );
75+ }
8176
82- fclose ($ handle );
83- }
77+ fclose ($ handle );
78+ }
8479
85- $ subject = '[{"queryType":"SELECT","rowCount":4178,"executionTimeMilliseconds":4764.52,"executionTimeSeconds":4.76,"memoryUsageBytes":323344,"memoryUsageMegabytes":0.31,"cachedResponse":false,"data":#|_|#,"error":false},{"queryType":"SELECT","rowCount":4178,"executionTimeMilliseconds":4764.52,"executionTimeSeconds":4.76,"memoryUsageBytes":323344,"memoryUsageMegabytes":0.31,"cachedResponse":false,"data":#|_|#,"error":false}] ' ;
80+ $ subject = '[{"queryType":"SELECT","rowCount":4178,"executionTimeMilliseconds":4764.52,"executionTimeSeconds":4.76,"memoryUsageBytes":323344,"memoryUsageMegabytes":0.31,"cachedResponse":false,"data":#|_|#,"error":false},{"queryType":"SELECT","rowCount":4178,"executionTimeMilliseconds":4764.52,"executionTimeSeconds":4.76,"memoryUsageBytes":323344,"memoryUsageMegabytes":0.31,"cachedResponse":false,"data":#|_|#,"error":false}] ' ;
8681
87- $ list = new StringList ();
82+ $ list = new StringList ();
8883
89- $ list ->enqueue ($ compressedString1 );
90- $ list ->enqueue ($ compressedString2 );
84+ $ list ->enqueue ($ compressedString1 );
85+ $ list ->enqueue ($ compressedString2 );
9186
92- $ mergedString = StringMerge::merge ($ subject , '#|_|# ' , $ list );
87+ $ mergedString = StringMerge::merge ($ subject , '#|_|# ' , $ list );
9388
94- $ this ->log ("Merged String Size is: " . $ mergedString ->getCompressedSize ());
89+ $ this ->log ("Merged String Size is: " . $ mergedString ->getCompressedSize ());
9590
96- $ mergedString ->writeCompressedContents ('tests/files/tmp/merged_compressed.gz ' );
91+ $ mergedString ->writeCompressedContents ('tests/files/tmp/merged_compressed.gz ' );
9792
98- // Actual size should be less than 80,000 bytes:
99- $ this ->assertLessThanOrEqual (80000 , $ mergedString ->getCompressedSize ());
93+ // Actual size should be less than 80,000 bytes:
94+ $ this ->assertLessThanOrEqual (80000 , $ mergedString ->getCompressedSize ());
10095
101- $ this ->memoryUsage (__METHOD__ , 'Finish ' );
96+ $ this ->memoryUsage (__METHOD__ , 'Finish ' );
10297 }
10398
104- public function testLargeMergeIntoObject ()
99+ public function testLargeMergeIntoObject ()
105100 {
106- $ this ->memoryUsage (__METHOD__ , 'Start ' );
107-
108- $ compressedString1 = new String ();
109- $ handle = fopen ('tests/files/companies_first_10.json ' , "r " );
110- if ($ handle )
111- {
112- while (($ buffer = fgets ($ handle , 4096 )) !== false )
113- {
114- $ compressedString1 ->write ($ buffer );
115- }
116-
117- fclose ($ handle );
118- }
119-
120- $ compressedString2 = new String ();
121- $ handle = fopen ('tests/files/companies_first_10.json ' , "r " );
122- if ($ handle )
123- {
124- while (($ buffer = fgets ($ handle , 4096 )) !== false )
125- {
126- $ compressedString2 ->write ($ buffer );
127- }
128-
129- fclose ($ handle );
130- }
131-
132- $ subject = array ();
133- $ queryObject1 = new \stdClass ();
134- $ queryObject1 ->queryType = 'SELECT ' ;
135- $ queryObject1 ->rowCount = 4178 ;
136- $ queryObject1 ->executionTimeMilliseconds = 4178 ;
137- $ queryObject1 ->executionTimeSeconds = 4178 ;
138- $ queryObject1 ->memoryUsageBytes = 4178 ;
139- $ queryObject1 ->memoryUsageMegabytes = 4178 ;
140- $ queryObject1 ->cachedResponse = 4178 ;
141- $ queryObject1 ->data = '#|_|# ' ;
142- $ queryObject1 ->error = false ;
143-
144- $ subject [] = $ queryObject1 ;
145-
146- $ queryObject2 = new \stdClass ();
147- $ queryObject2 ->queryType = 'SELECT ' ;
148- $ queryObject2 ->rowCount = 4178 ;
149- $ queryObject2 ->executionTimeMilliseconds = 4178 ;
150- $ queryObject2 ->executionTimeSeconds = 4178 ;
151- $ queryObject2 ->memoryUsageBytes = 4178 ;
152- $ queryObject2 ->memoryUsageMegabytes = 4178 ;
153- $ queryObject2 ->cachedResponse = 4178 ;
154- $ queryObject2 ->data = '#|_|# ' ;
155- $ queryObject2 ->error = false ;
156-
157- $ subject [] = $ queryObject2 ;
158-
159- $ list = new StringList ();
160-
161- $ list ->enqueue ($ compressedString1 );
162- $ list ->enqueue ($ compressedString2 );
163-
164- $ mergedString = StringMerge::merge ($ subject , '#|_|# ' , $ list );
165-
166- // Actual size should be less than 80,000 bytes:
167- $ this ->assertLessThanOrEqual (80000 , $ mergedString ->getCompressedSize ());
168-
169- //file_put_contents('test_large_merge.json', $actualString);
170- $ this ->memoryUsage (__METHOD__ , 'Finish ' );
101+ $ this ->memoryUsage (__METHOD__ , 'Start ' );
102+
103+ $ compressedString1 = new String ();
104+ $ handle = fopen ('tests/files/companies_first_10.json ' , "r " );
105+ if ($ handle ) {
106+ while (($ buffer = fgets ($ handle , 4096 )) !== false ) {
107+ $ compressedString1 ->write ($ buffer );
108+ }
109+
110+ fclose ($ handle );
111+ }
112+
113+ $ compressedString2 = new String ();
114+ $ handle = fopen ('tests/files/companies_first_10.json ' , "r " );
115+ if ($ handle ) {
116+ while (($ buffer = fgets ($ handle , 4096 )) !== false ) {
117+ $ compressedString2 ->write ($ buffer );
118+ }
119+
120+ fclose ($ handle );
121+ }
122+
123+ $ subject = array ();
124+ $ queryObject1 = new \stdClass ();
125+ $ queryObject1 ->queryType = 'SELECT ' ;
126+ $ queryObject1 ->rowCount = 4178 ;
127+ $ queryObject1 ->executionTimeMilliseconds = 4178 ;
128+ $ queryObject1 ->executionTimeSeconds = 4178 ;
129+ $ queryObject1 ->memoryUsageBytes = 4178 ;
130+ $ queryObject1 ->memoryUsageMegabytes = 4178 ;
131+ $ queryObject1 ->cachedResponse = 4178 ;
132+ $ queryObject1 ->data = '#|_|# ' ;
133+ $ queryObject1 ->error = false ;
134+
135+ $ subject [] = $ queryObject1 ;
136+
137+ $ queryObject2 = new \stdClass ();
138+ $ queryObject2 ->queryType = 'SELECT ' ;
139+ $ queryObject2 ->rowCount = 4178 ;
140+ $ queryObject2 ->executionTimeMilliseconds = 4178 ;
141+ $ queryObject2 ->executionTimeSeconds = 4178 ;
142+ $ queryObject2 ->memoryUsageBytes = 4178 ;
143+ $ queryObject2 ->memoryUsageMegabytes = 4178 ;
144+ $ queryObject2 ->cachedResponse = 4178 ;
145+ $ queryObject2 ->data = '#|_|# ' ;
146+ $ queryObject2 ->error = false ;
147+
148+ $ subject [] = $ queryObject2 ;
149+
150+ $ list = new StringList ();
151+
152+ $ list ->enqueue ($ compressedString1 );
153+ $ list ->enqueue ($ compressedString2 );
154+
155+ $ mergedString = StringMerge::merge ($ subject , '#|_|# ' , $ list );
156+
157+ // Actual size should be less than 80,000 bytes:
158+ $ this ->assertLessThanOrEqual (80000 , $ mergedString ->getCompressedSize ());
159+
160+ //file_put_contents('test_large_merge.json', $actualString);
161+ $ this ->memoryUsage (__METHOD__ , 'Finish ' );
171162 }
172163}
0 commit comments