Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2718)

Unified Diff: build_tools/debug_server/debug_server/unit_tests/rsp_packetizer_test.cc

Issue 6312039: RSP proxy that can record session (for playback testing).... (Closed) Base URL: http://nativeclient-sdk.googlecode.com/svn/trunk/src/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: build_tools/debug_server/debug_server/unit_tests/rsp_packetizer_test.cc
===================================================================
--- build_tools/debug_server/debug_server/unit_tests/rsp_packetizer_test.cc (revision 0)
+++ build_tools/debug_server/debug_server/unit_tests/rsp_packetizer_test.cc (revision 0)
@@ -0,0 +1,184 @@
+#include "rsp_packetizer_test.h"
+#include <stdio.h>
+#include "..\common\rsp_packetizer.h"
+
+namespace {
+unsigned long test_table[] = {
+ 0x34969443, 0xD76AA478, 0xE8C7B756, 0x242070DB, 0xC1BDCEEE,
+ 0xF57C0FAF, 0x4787C62A, 0xA8304613, 0xFD469501, 0x698098D8,
+ 0x8B44F7AF, 0xFFFF5BB1, 0x895CD7BE, 0x6B901122, 0xFD987193,
+ 0xA679438E, 0x49B40821, 0xF61E2562, 0xC040B340, 0x265E5A51,
+ 0xE9B6C7AA, 0xD62F105D, 0x02441453, 0xD8A1E681, 0xE7D3FBC8,
+ 0x21E1CDE6, 0xC33707D6, 0xF4D50D87, 0x455A14ED, 0xA9E3E905,
+ 0xFCEFA3F8, 0x676F02D9, 0x8D2A4C8A, 0xFFFA3942, 0x8771F681,
+ 0x6D9D6122, 0xFDE5380C, 0xA4BEEA44, 0x4BDECFA9, 0xF6BB4B60,
+ 0xBEBFBC70, 0x289B7EC6, 0xEAA127FA, 0xD4EF3085, 0x04881D05,
+ 0xD9D4D039, 0xE6DB99E5, 0x1FA27CF8, 0xC4AC5665, 0xF4292244,
+ 0x432AFF97, 0xAB9423A7, 0xFC93A039, 0x655B59C3, 0x8F0CCC92,
+ 0xFFEFF47D, 0x85845DD1, 0x6FA87E4F, 0xFE2CE6E0, 0xA3014314,
+ 0x4E0811A1, 0xF7537E82, 0xBD3AF235, 0x2AD7D2BB, 0xEB86D391,
+ 0x34969443, 0xD76AA478, 0xE8C7B756, 0x242070DB, 0xC1BDCEEE,
+ 0xF57C0FAF, 0x4787C62A, 0xA8304613, 0xFD469501, 0x698098D8,
+ 0x8B44F7AF, 0xFFFF5BB1, 0x895CD7BE, 0x6B901122, 0xFD987193,
+ 0xA679438E, 0x49B40821, 0xF61E2562, 0xC040B340, 0x265E5A51,
+ 0xE9B6C7AA, 0xD62F105D, 0x02441453, 0xD8A1E681, 0xE7D3FBC8,
+ 0x21E1CDE6, 0xC33707D6, 0xF4D50D87, 0x455A14ED, 0xA9E3E905,
+ 0xFCEFA3F8, 0x676F02D9, 0x8D2A4C8A, 0xFFFA3942, 0x8771F681,
+ 0x6D9D6122, 0xFDE5380C, 0xA4BEEA44, 0x4BDECFA9, 0xF6BB4B60,
+ 0xBEBFBC70, 0x289B7EC6, 0xEAA127FA, 0xD4EF3085, 0x04881D05,
+ 0xD9D4D039, 0xE6DB99E5, 0x1FA27CF8, 0xC4AC5665, 0xF4292244,
+ 0x432AFF97, 0xAB9423A7, 0xFC93A039, 0x655B59C3, 0x8F0CCC92,
+ 0xFFEFF47D, 0x85845DD1, 0x6FA87E4F, 0xFE2CE6E0, 0xA3014314,
+ 0x4E0811A1, 0xF7537E82, 0xBD3AF235, 0x2AD7D2BB, 0xEB86D391
+};
+} // namespace
+
+namespace rsp {
+
+Packetizer_test::Packetizer_test(){
+}
+
+Packetizer_test::~Packetizer_test(){
+}
+
+void Packetizer_test::Clean() {
+ response_type_ = NONE;
+ response_num_ = 0;
+ packet_body_.Clear();
+ token_is_checksum_valid_ = true;
+}
+
+void Packetizer_test::OnPacket(debug::Blob& body, bool valid_checksum) {
+ response_type_ = PACKET;
+ response_num_++;
+ packet_body_ = body;
+ token_is_checksum_valid_ = valid_checksum;
+}
+
+void Packetizer_test::OnUnexpectedChar(char unexpected_char) {
+ packet_body_.PushBack(unexpected_char);
+ response_type_ = INVALID_CHAR;
+ response_num_++;
+}
+
+void Packetizer_test::OnBreak() {
+ response_type_ = BREAK;
+ response_num_++;
+}
+
+bool Packetizer_test::CompareTokenBody(const char* text) {
+ size_t str_len = strlen(text);
+ size_t body_len = packet_body_.Size();
+ if (str_len != body_len)
+ return false;
+ for (size_t i = 0; i < str_len; i++) {
+ if (packet_body_[i] != text[i])
+ return false;
+ }
+ return true;
+}
+
+#define ReportError(n) {\
+ char message[300];\
+ _snprintf_s(message, sizeof(message) - 1, "Error %d in rsp::Packetizer unit test #%d. File=[%s] Line=%d.", n, test_no, __FILE__, __LINE__);\
+ if (NULL != error) *error = message;\
+ return false;\
+} while(0)
+
+#define ExpectedResult(type, text, valid) \
+ if (1 != response_num_) {\
+ ReportError(1);\
+ }\
+ else if (response_type_ != type) {\
+ ReportError(2);\
+ }\
+ else if (!CompareTokenBody(text)) {\
+ ReportError(3);\
+ }\
+ else if (token_is_checksum_valid_ != valid) {\
+ ReportError(4);\
+ } test_no++
+
+bool Packetizer_test::Run(std::string* error) {
+ Packetizer pktz;
+ pktz.SetPacketConsumer(this);
+ int test_no = 1;
+
+ Clean();
+ pktz.OnData("$#00");
+ ExpectedResult(PACKET, "", true);
+
+ Clean();
+ pktz.OnData("$#02");
+ ExpectedResult(PACKET, "", false);
+
+ Clean();
+ pktz.OnData("$#20");
+ ExpectedResult(PACKET, "", false);
+
+ Clean();
+ pktz.OnData("$ #40");
+ ExpectedResult(PACKET, " ", true);
+
+ Clean();
+ pktz.OnData("$123456#35");
+ ExpectedResult(PACKET, "123456", true);
+
+ Clean();
+ pktz.OnData("$}]aa#9C");
+ ExpectedResult(PACKET, "}aa", true);
+
+ Clean();
+ pktz.OnData("$0*##7D");
+ ExpectedResult(PACKET, "0000000", true);
+
+ Clean();
+ pktz.OnData("#");
+ ExpectedResult(INVALID_CHAR, "#", true);
+
+ Clean();
+ pktz.OnData("\x03");
+ ExpectedResult(BREAK, "", true);
+
+ size_t tab_sz = sizeof(test_table);
+ unsigned char* p_tab = reinterpret_cast<unsigned char*>(&test_table);
+ for (size_t i = 0; i < tab_sz; i++) {
+ size_t len = p_tab[i++] % 50;
+ if ((i + len) > tab_sz )
+ len = tab_sz - i;
+
+ unsigned char* p_data = &p_tab[i];
+ debug::Blob msg;
+ for (size_t k = 0; k < len; k++)
+ msg.PushBack(p_data[i++]);
+
+ debug::Blob msg_in;
+ PacketUtils::AddEnvelope(msg, &msg_in);
+
+ Clean();
+ size_t data_len = msg_in.Size();
+ char* data = (char*)malloc(data_len);
+ for(size_t k = 0; k < data_len; k++)
+ data[k] = msg_in[k];
+
+ pktz.OnData(data, data_len);
+
+ if (1 != response_num_) {
+ ReportError(5);
+ }
+ else if (response_type_ != PACKET) {
+ ReportError(6);
+ }
+ else if (!(packet_body_ == msg)) {
+ ReportError(7);
+ }
+ else if (!token_is_checksum_valid_) {
+ ReportError(8);
+ }
+ free(data);
+ test_no++;
+ }
+
+ return true;
+}
+} //namespace rsp

Powered by Google App Engine
This is Rietveld 408576698