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

Side by Side Diff: chrome/browser/sync/engine/syncapi_unittest.cc

Issue 7049028: [Sync] Speed up Javascript node operations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sync/engine/syncapi.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // Unit tests for the SyncApi. Note that a lot of the underlying 5 // Unit tests for the SyncApi. Note that a lot of the underlying
6 // functionality is provided by the Syncable layer, which has its own 6 // functionality is provided by the Syncable layer, which has its own
7 // unit tests. We'll test SyncApi specific things in this harness. 7 // unit tests. We'll test SyncApi specific things in this harness.
8 8
9 #include <map> 9 #include <map>
10 10
(...skipping 853 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 ReadNode node(&trans); 864 ReadNode node(&trans);
865 node.InitByRootLookup(); 865 node.InitByRootLookup();
866 CheckNodeValue(node, *node_info); 866 CheckNodeValue(node, *node_info);
867 } else { 867 } else {
868 ADD_FAILURE(); 868 ADD_FAILURE();
869 } 869 }
870 870
871 js_backend->RemoveParentJsEventRouter(); 871 js_backend->RemoveParentJsEventRouter();
872 } 872 }
873 873
874 void CheckGetNodeByIdReturnArgs(const SyncManager& sync_manager, 874 void CheckGetNodesByIdReturnArgs(const SyncManager& sync_manager,
875 const JsArgList& return_args, 875 const JsArgList& return_args,
876 int64 id) { 876 int64 id) {
877 EXPECT_EQ(1u, return_args.Get().GetSize()); 877 EXPECT_EQ(1u, return_args.Get().GetSize());
878 ListValue* nodes = NULL;
879 ASSERT_TRUE(return_args.Get().GetList(0, &nodes));
880 ASSERT_TRUE(nodes);
881 EXPECT_EQ(1u, nodes->GetSize());
878 DictionaryValue* node_info = NULL; 882 DictionaryValue* node_info = NULL;
879 EXPECT_TRUE(return_args.Get().GetDictionary(0, &node_info)); 883 EXPECT_TRUE(nodes->GetDictionary(0, &node_info));
880 if (node_info) { 884 ASSERT_TRUE(node_info);
881 ReadTransaction trans(sync_manager.GetUserShare()); 885 ReadTransaction trans(sync_manager.GetUserShare());
882 ReadNode node(&trans); 886 ReadNode node(&trans);
883 node.InitByIdLookup(id); 887 node.InitByIdLookup(id);
884 CheckNodeValue(node, *node_info); 888 CheckNodeValue(node, *node_info);
885 } else {
886 ADD_FAILURE();
887 }
888 } 889 }
889 890
890 TEST_F(SyncManagerTest, ProcessMessageGetNodeById) { 891 TEST_F(SyncManagerTest, ProcessMessageGetNodesById) {
891 int64 child_id = 892 int64 child_id =
892 MakeNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, "testtag"); 893 MakeNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, "testtag");
893 894
894 browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); 895 browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend();
895 896
896 StrictMock<MockJsEventHandler> event_handler; 897 StrictMock<MockJsEventHandler> event_handler;
897 StrictMock<MockJsEventRouter> event_router; 898 StrictMock<MockJsEventRouter> event_router;
898 899
899 JsArgList return_args; 900 JsArgList return_args;
900 901
901 EXPECT_CALL(event_router, 902 EXPECT_CALL(event_router,
902 RouteJsMessageReply("getNodeById", _, &event_handler)) 903 RouteJsMessageReply("getNodesById", _, &event_handler))
903 .Times(2).WillRepeatedly(SaveArg<1>(&return_args)); 904 .Times(2).WillRepeatedly(SaveArg<1>(&return_args));
904 905
905 js_backend->SetParentJsEventRouter(&event_router); 906 js_backend->SetParentJsEventRouter(&event_router);
906 907
907 // Should trigger the reply. 908 // Should trigger the reply.
908 { 909 {
909 ListValue args; 910 ListValue args;
910 args.Append(Value::CreateStringValue("1")); 911 ListValue* ids = new ListValue();
911 js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); 912 args.Append(ids);
913 ids->Append(Value::CreateStringValue("1"));
914 js_backend->ProcessMessage("getNodesById",
915 JsArgList(&args), &event_handler);
912 } 916 }
913 917
914 CheckGetNodeByIdReturnArgs(sync_manager_, return_args, 1); 918 CheckGetNodesByIdReturnArgs(sync_manager_, return_args, 1);
915 919
916 // Should trigger another reply. 920 // Should trigger another reply.
917 { 921 {
918 ListValue args; 922 ListValue args;
919 args.Append(Value::CreateStringValue(base::Int64ToString(child_id))); 923 ListValue* ids = new ListValue();
920 js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); 924 args.Append(ids);
925 ids->Append(Value::CreateStringValue(base::Int64ToString(child_id)));
926 js_backend->ProcessMessage("getNodesById",
927 JsArgList(&args), &event_handler);
921 } 928 }
922 929
923 CheckGetNodeByIdReturnArgs(sync_manager_, return_args, child_id); 930 CheckGetNodesByIdReturnArgs(sync_manager_, return_args, child_id);
924 931
925 js_backend->RemoveParentJsEventRouter(); 932 js_backend->RemoveParentJsEventRouter();
926 } 933 }
927 934
928 TEST_F(SyncManagerTest, ProcessMessageGetNodeByIdFailure) { 935 TEST_F(SyncManagerTest, ProcessMessageGetNodesByIdFailure) {
929 browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); 936 browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend();
930 937
931 StrictMock<MockJsEventHandler> event_handler; 938 StrictMock<MockJsEventHandler> event_handler;
932 StrictMock<MockJsEventRouter> event_router; 939 StrictMock<MockJsEventRouter> event_router;
933 940
934 ListValue null_args; 941 ListValue empty_list_args;
935 null_args.Append(Value::CreateNullValue()); 942 empty_list_args.Append(new ListValue());
936 943
937 EXPECT_CALL(event_router, 944 EXPECT_CALL(event_router,
938 RouteJsMessageReply("getNodeById", HasArgsAsList(null_args), 945 RouteJsMessageReply("getNodesById",
946 HasArgsAsList(empty_list_args),
947 &event_handler))
948 .Times(6);
949
950 js_backend->SetParentJsEventRouter(&event_router);
951
952 {
953 ListValue args;
954 js_backend->ProcessMessage("getNodesById",
955 JsArgList(&args), &event_handler);
956 }
957
958 {
959 ListValue args;
960 args.Append(new ListValue());
961 js_backend->ProcessMessage("getNodesById",
962 JsArgList(&args), &event_handler);
963 }
964
965 {
966 ListValue args;
967 ListValue* ids = new ListValue();
968 args.Append(ids);
969 ids->Append(Value::CreateStringValue(""));
970 js_backend->ProcessMessage("getNodesById",
971 JsArgList(&args), &event_handler);
972 }
973
974 {
975 ListValue args;
976 ListValue* ids = new ListValue();
977 args.Append(ids);
978 ids->Append(Value::CreateStringValue("nonsense"));
979 js_backend->ProcessMessage("getNodesById",
980 JsArgList(&args), &event_handler);
981 }
982
983 {
984 ListValue args;
985 ListValue* ids = new ListValue();
986 args.Append(ids);
987 ids->Append(Value::CreateStringValue("0"));
988 js_backend->ProcessMessage("getNodesById",
989 JsArgList(&args), &event_handler);
990 }
991
992 {
993 ListValue args;
994 ListValue* ids = new ListValue();
995 args.Append(ids);
996 ids->Append(Value::CreateStringValue("9999"));
997 js_backend->ProcessMessage("getNodesById",
998 JsArgList(&args), &event_handler);
999 }
1000
1001 js_backend->RemoveParentJsEventRouter();
1002 }
1003
1004 TEST_F(SyncManagerTest, ProcessMessageGetChildNodeIds) {
1005 browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend();
1006
1007 StrictMock<MockJsEventHandler> event_handler;
1008 StrictMock<MockJsEventRouter> event_router;
1009
1010 JsArgList return_args;
1011
1012 EXPECT_CALL(event_router,
1013 RouteJsMessageReply("getChildNodeIds", _, &event_handler))
1014 .Times(1).WillRepeatedly(SaveArg<1>(&return_args));
1015
1016 js_backend->SetParentJsEventRouter(&event_router);
1017
1018 // Should trigger the reply.
1019 {
1020 ListValue args;
1021 args.Append(Value::CreateStringValue("1"));
1022 js_backend->ProcessMessage("getChildNodeIds",
1023 JsArgList(&args), &event_handler);
1024 }
1025
1026 EXPECT_EQ(1u, return_args.Get().GetSize());
1027 ListValue* nodes = NULL;
1028 ASSERT_TRUE(return_args.Get().GetList(0, &nodes));
1029 ASSERT_TRUE(nodes);
1030 EXPECT_EQ(5u, nodes->GetSize());
1031
1032 js_backend->RemoveParentJsEventRouter();
1033 }
1034
1035 TEST_F(SyncManagerTest, ProcessMessageGetChildNodeIdsFailure) {
1036 browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend();
1037
1038 StrictMock<MockJsEventHandler> event_handler;
1039 StrictMock<MockJsEventRouter> event_router;
1040
1041 ListValue empty_list_args;
1042 empty_list_args.Append(new ListValue());
1043
1044 EXPECT_CALL(event_router,
1045 RouteJsMessageReply("getChildNodeIds",
1046 HasArgsAsList(empty_list_args),
939 &event_handler)) 1047 &event_handler))
940 .Times(5); 1048 .Times(5);
941 1049
942 js_backend->SetParentJsEventRouter(&event_router); 1050 js_backend->SetParentJsEventRouter(&event_router);
943 1051
944 { 1052 {
945 ListValue args; 1053 ListValue args;
946 js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); 1054 js_backend->ProcessMessage("getChildNodeIds",
1055 JsArgList(&args), &event_handler);
947 } 1056 }
948 1057
949 { 1058 {
950 ListValue args; 1059 ListValue args;
951 args.Append(Value::CreateStringValue("")); 1060 args.Append(Value::CreateStringValue(""));
952 js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); 1061 js_backend->ProcessMessage("getChildNodeIds",
1062 JsArgList(&args), &event_handler);
953 } 1063 }
954 1064
955 { 1065 {
956 ListValue args; 1066 ListValue args;
957 args.Append(Value::CreateStringValue("nonsense")); 1067 args.Append(Value::CreateStringValue("nonsense"));
958 js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); 1068 js_backend->ProcessMessage("getChildNodeIds",
959 } 1069 JsArgList(&args), &event_handler);
960
961 {
962 ListValue args;
963 args.Append(Value::CreateStringValue("nonsense"));
964 js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler);
965 } 1070 }
966 1071
967 { 1072 {
968 ListValue args; 1073 ListValue args;
969 args.Append(Value::CreateStringValue("0")); 1074 args.Append(Value::CreateStringValue("0"));
970 js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); 1075 js_backend->ProcessMessage("getChildNodeIds",
1076 JsArgList(&args), &event_handler);
971 } 1077 }
972 1078
973 // TODO(akalin): Figure out how to test InitByIdLookup() failure. 1079 {
1080 ListValue args;
1081 args.Append(Value::CreateStringValue("9999"));
1082 js_backend->ProcessMessage("getChildNodeIds",
1083 JsArgList(&args), &event_handler);
1084 }
974 1085
975 js_backend->RemoveParentJsEventRouter(); 1086 js_backend->RemoveParentJsEventRouter();
976 } 1087 }
977 1088
978 TEST_F(SyncManagerTest, OnNotificationStateChange) { 1089 TEST_F(SyncManagerTest, OnNotificationStateChange) {
979 InSequence dummy; 1090 InSequence dummy;
980 StrictMock<MockJsEventRouter> event_router; 1091 StrictMock<MockJsEventRouter> event_router;
981 1092
982 DictionaryValue true_details; 1093 DictionaryValue true_details;
983 true_details.SetBoolean("enabled", true); 1094 true_details.SetBoolean("enabled", true);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1124 true /* is encrypted */)); 1235 true /* is encrypted */));
1125 EXPECT_TRUE(syncable::VerifyDataTypeEncryption(trans.GetWrappedTrans(), 1236 EXPECT_TRUE(syncable::VerifyDataTypeEncryption(trans.GetWrappedTrans(),
1126 syncable::THEMES, 1237 syncable::THEMES,
1127 false /* not encrypted */)); 1238 false /* not encrypted */));
1128 } 1239 }
1129 } 1240 }
1130 1241
1131 } // namespace 1242 } // namespace
1132 1243
1133 } // namespace browser_sync 1244 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/engine/syncapi.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698