OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ppapi/tests/test_websocket.h" | 5 #include "ppapi/tests/test_websocket.h" |
6 | 6 |
7 #include <stdio.h> | 7 #include <stdio.h> |
8 #include <string.h> | 8 #include <string.h> |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <string> | 10 #include <string> |
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
645 ASSERT_TRUE(ws); | 645 ASSERT_TRUE(ws); |
646 ASSERT_EQ(PP_OK, connect_result); | 646 ASSERT_EQ(PP_OK, connect_result); |
647 | 647 |
648 // Prepare PP_Var objects to send. | 648 // Prepare PP_Var objects to send. |
649 const char* text = "hello pepper"; | 649 const char* text = "hello pepper"; |
650 PP_Var text_var = CreateVarString(text); | 650 PP_Var text_var = CreateVarString(text); |
651 std::vector<uint8_t> binary(256); | 651 std::vector<uint8_t> binary(256); |
652 for (uint32_t i = 0; i < binary.size(); ++i) | 652 for (uint32_t i = 0; i < binary.size(); ++i) |
653 binary[i] = i; | 653 binary[i] = i; |
654 PP_Var binary_var = CreateVarBinary(binary); | 654 PP_Var binary_var = CreateVarBinary(binary); |
655 // Prepare very large binary data over 64KB. Object serializer in ppapi_proxy | |
656 // has a limitation of 64KB as maximum return PP_Var data size to SRPC. | |
657 // In case received data over 64KB exists, a specific code handles this large | |
658 // data via asynchronous callback from main thread. This data intends to test | |
659 // the code. | |
660 std::vector<uint8_t> large_binary(128 * 1024); | |
dmichael (off chromium)
2012/04/06 17:12:12
Win XP has been giving me fits when testing large
Takashi Toyoshima
2012/04/11 11:28:45
Oh, I see.
65k looks big enough. I change this siz
| |
661 for (uint32_t i = 0; i < large_binary.size(); ++i) | |
662 large_binary[i] = i & 0xff; | |
663 PP_Var large_binary_var = CreateVarBinary(large_binary); | |
655 | 664 |
656 // Send many messages. | 665 // Send many messages. |
666 int32_t result; | |
657 for (int i = 0; i < 256; ++i) { | 667 for (int i = 0; i < 256; ++i) { |
658 int32_t result = websocket_interface_->SendMessage(ws, text_var); | 668 result = websocket_interface_->SendMessage(ws, text_var); |
659 ASSERT_EQ(PP_OK, result); | 669 ASSERT_EQ(PP_OK, result); |
660 result = websocket_interface_->SendMessage(ws, binary_var); | 670 result = websocket_interface_->SendMessage(ws, binary_var); |
661 ASSERT_EQ(PP_OK, result); | 671 ASSERT_EQ(PP_OK, result); |
662 } | 672 } |
673 result = websocket_interface_->SendMessage(ws, large_binary_var); | |
dmichael (off chromium)
2012/04/06 17:12:12
Would it be possible to also add a test where you
Takashi Toyoshima
2012/04/11 11:28:45
Done.
| |
674 ASSERT_EQ(PP_OK, result); | |
663 ReleaseVar(text_var); | 675 ReleaseVar(text_var); |
664 ReleaseVar(binary_var); | 676 ReleaseVar(binary_var); |
677 ReleaseVar(large_binary_var); | |
665 | 678 |
666 // Receive echoed data. | 679 // Receive echoed data. |
667 for (int i = 0; i < 512; ++i) { | 680 for (int i = 0; i <= 512; ++i) { |
668 TestCompletionCallback callback(instance_->pp_instance(), force_async_); | 681 TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
669 PP_Var received_message; | 682 PP_Var received_message; |
670 int32_t result = websocket_interface_->ReceiveMessage( | 683 result = websocket_interface_->ReceiveMessage( |
671 ws, &received_message, static_cast<pp::CompletionCallback>( | 684 ws, &received_message, static_cast<pp::CompletionCallback>( |
672 callback).pp_completion_callback()); | 685 callback).pp_completion_callback()); |
673 ASSERT_TRUE(result == PP_OK || result == PP_OK_COMPLETIONPENDING); | 686 ASSERT_TRUE(result == PP_OK || result == PP_OK_COMPLETIONPENDING); |
674 if (result == PP_OK_COMPLETIONPENDING) | 687 if (result == PP_OK_COMPLETIONPENDING) |
675 result = callback.WaitForResult(); | 688 result = callback.WaitForResult(); |
676 ASSERT_EQ(PP_OK, result); | 689 ASSERT_EQ(PP_OK, result); |
677 if (i & 1) { | 690 if (i == 512) { |
691 ASSERT_TRUE(AreEqualWithBinary(received_message, large_binary)); | |
692 } else if (i & 1) { | |
678 ASSERT_TRUE(AreEqualWithBinary(received_message, binary)); | 693 ASSERT_TRUE(AreEqualWithBinary(received_message, binary)); |
679 } else { | 694 } else { |
680 ASSERT_TRUE(AreEqualWithString(received_message, text)); | 695 ASSERT_TRUE(AreEqualWithString(received_message, text)); |
681 } | 696 } |
682 ReleaseVar(received_message); | 697 ReleaseVar(received_message); |
683 } | 698 } |
684 core_interface_->ReleaseResource(ws); | 699 core_interface_->ReleaseResource(ws); |
685 | 700 |
686 PASS(); | 701 PASS(); |
687 } | 702 } |
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1149 size_t last_event = events_on_closed - 1; | 1164 size_t last_event = events_on_closed - 1; |
1150 for (uint32_t i = 1; i < last_event; ++i) { | 1165 for (uint32_t i = 1; i < last_event; ++i) { |
1151 ASSERT_EQ(WebSocketEvent::EVENT_MESSAGE, events[i].event_type); | 1166 ASSERT_EQ(WebSocketEvent::EVENT_MESSAGE, events[i].event_type); |
1152 ASSERT_TRUE(AreEqualWithString(events[i].var.pp_var(), message)); | 1167 ASSERT_TRUE(AreEqualWithString(events[i].var.pp_var(), message)); |
1153 } | 1168 } |
1154 ASSERT_EQ(WebSocketEvent::EVENT_CLOSE, events[last_event].event_type); | 1169 ASSERT_EQ(WebSocketEvent::EVENT_CLOSE, events[last_event].event_type); |
1155 ASSERT_TRUE(events[last_event].was_clean); | 1170 ASSERT_TRUE(events[last_event].was_clean); |
1156 | 1171 |
1157 PASS(); | 1172 PASS(); |
1158 } | 1173 } |
OLD | NEW |