processor: Export pid/tid as signed integers into JSON

Some old tooling doesn't support positive values larger than
numeric_limits<int>::max(). So instead export very large pid/tid as
negative ints.

Bug: 130786269
Change-Id: I5d6e235acb32511abb3f736143e875e2c264123b
diff --git a/src/trace_processor/export_json_unittest.cc b/src/trace_processor/export_json_unittest.cc
index 447f0fe..2c9ec19 100644
--- a/src/trace_processor/export_json_unittest.cc
+++ b/src/trace_processor/export_json_unittest.cc
@@ -146,7 +146,7 @@
   EXPECT_EQ(event["tdur"].asInt64(), kThreadDuration / 1000);
   EXPECT_EQ(event["ticount"].asInt64(), kThreadInstructionCount);
   EXPECT_EQ(event["tidelta"].asInt64(), kThreadInstructionDelta);
-  EXPECT_EQ(event["tid"].asUInt(), kThreadID);
+  EXPECT_EQ(event["tid"].asInt(), static_cast<int>(kThreadID));
   EXPECT_EQ(event["cat"].asString(), kCategory);
   EXPECT_EQ(event["name"].asString(), kName);
   EXPECT_TRUE(event["args"].isObject());
@@ -192,7 +192,7 @@
   EXPECT_FALSE(event.isMember("tdur"));
   EXPECT_EQ(event["ticount"].asInt64(), kThreadInstructionCount);
   EXPECT_FALSE(event.isMember("tidelta"));
-  EXPECT_EQ(event["tid"].asUInt(), kThreadID);
+  EXPECT_EQ(event["tid"].asInt(), static_cast<int>(kThreadID));
   EXPECT_EQ(event["cat"].asString(), kCategory);
   EXPECT_EQ(event["name"].asString(), kName);
   EXPECT_TRUE(event["args"].isObject());
@@ -218,7 +218,7 @@
 
   Json::Value event = result["traceEvents"][0];
   EXPECT_EQ(event["ph"].asString(), "M");
-  EXPECT_EQ(event["tid"].asUInt(), kThreadID);
+  EXPECT_EQ(event["tid"].asInt(), static_cast<int>(kThreadID));
   EXPECT_EQ(event["name"].asString(), "thread_name");
   EXPECT_EQ(event["args"]["name"].asString(), kName);
 }
@@ -768,7 +768,7 @@
   EXPECT_EQ(result["traceEvents"].size(), 1u);
 
   Json::Value event = result["traceEvents"][0];
-  EXPECT_EQ(event["tid"].asUInt(), kThreadID);
+  EXPECT_EQ(event["tid"].asInt(), static_cast<int>(kThreadID));
   EXPECT_EQ(event["ph"].asString(), "I");
   EXPECT_EQ(event["ts"].asInt64(), kTimestamp / 1000);
   EXPECT_EQ(event["s"].asString(), "t");
@@ -842,40 +842,40 @@
   Json::Value result = ToJsonValue(ReadFile(output));
   EXPECT_EQ(result["traceEvents"].size(), 5u);
 
-  EXPECT_EQ(result["traceEvents"][0]["pid"].asUInt(), 1u);
-  EXPECT_EQ(result["traceEvents"][0]["tid"].asUInt(), 1u);
+  EXPECT_EQ(result["traceEvents"][0]["pid"].asInt(), 1);
+  EXPECT_EQ(result["traceEvents"][0]["tid"].asInt(), 1);
   EXPECT_EQ(result["traceEvents"][0]["ph"].asString(), "I");
   EXPECT_EQ(result["traceEvents"][0]["ts"].asInt64(), 10);
   EXPECT_EQ(result["traceEvents"][0]["cat"].asString(), "cat");
   EXPECT_EQ(result["traceEvents"][0]["name"].asString(), "name1a");
 
-  EXPECT_EQ(result["traceEvents"][1]["pid"].asUInt(), 1u);
-  EXPECT_EQ(result["traceEvents"][1]["tid"].asUInt(), 2u);
+  EXPECT_EQ(result["traceEvents"][1]["pid"].asInt(), 1);
+  EXPECT_EQ(result["traceEvents"][1]["tid"].asInt(), 2);
   EXPECT_EQ(result["traceEvents"][1]["ph"].asString(), "X");
   EXPECT_EQ(result["traceEvents"][1]["ts"].asInt64(), 20);
   EXPECT_EQ(result["traceEvents"][1]["dur"].asInt64(), 1);
   EXPECT_EQ(result["traceEvents"][1]["cat"].asString(), "cat");
   EXPECT_EQ(result["traceEvents"][1]["name"].asString(), "name1b");
 
-  EXPECT_EQ(result["traceEvents"][2]["pid"].asUInt(), 1u);
-  EXPECT_EQ(result["traceEvents"][2]["tid"].asUInt(),
-            static_cast<uint32_t>(std::numeric_limits<uint32_t>::max() - 1u));
+  EXPECT_EQ(result["traceEvents"][2]["pid"].asInt(), 1);
+  EXPECT_EQ(result["traceEvents"][2]["tid"].asInt(),
+            static_cast<int>(std::numeric_limits<uint32_t>::max() - 1u));
   EXPECT_EQ(result["traceEvents"][2]["ph"].asString(), "I");
   EXPECT_EQ(result["traceEvents"][2]["ts"].asInt64(), 30);
   EXPECT_EQ(result["traceEvents"][2]["cat"].asString(), "cat");
   EXPECT_EQ(result["traceEvents"][2]["name"].asString(), "name1c");
 
-  EXPECT_EQ(result["traceEvents"][3]["pid"].asUInt(),
-            std::numeric_limits<uint32_t>::max());
-  EXPECT_EQ(result["traceEvents"][3]["tid"].asUInt(), 1u);
+  EXPECT_EQ(result["traceEvents"][3]["pid"].asInt(),
+            static_cast<int>(std::numeric_limits<uint32_t>::max()));
+  EXPECT_EQ(result["traceEvents"][3]["tid"].asInt(), 1);
   EXPECT_EQ(result["traceEvents"][3]["ph"].asString(), "I");
   EXPECT_EQ(result["traceEvents"][3]["ts"].asInt64(), 40);
   EXPECT_EQ(result["traceEvents"][3]["cat"].asString(), "cat");
   EXPECT_EQ(result["traceEvents"][3]["name"].asString(), "name2a");
 
-  EXPECT_EQ(result["traceEvents"][4]["pid"].asUInt(),
-            std::numeric_limits<uint32_t>::max());
-  EXPECT_EQ(result["traceEvents"][4]["tid"].asUInt(), 2u);
+  EXPECT_EQ(result["traceEvents"][4]["pid"].asInt(),
+            static_cast<int>(std::numeric_limits<uint32_t>::max()));
+  EXPECT_EQ(result["traceEvents"][4]["tid"].asInt(), 2);
   EXPECT_EQ(result["traceEvents"][4]["ph"].asString(), "X");
   EXPECT_EQ(result["traceEvents"][4]["ts"].asInt64(), 50);
   EXPECT_EQ(result["traceEvents"][1]["dur"].asInt64(), 1);
@@ -931,7 +931,7 @@
   Json::Value begin_event1 = result["traceEvents"][0];
   EXPECT_EQ(begin_event1["ph"].asString(), "b");
   EXPECT_EQ(begin_event1["ts"].asInt64(), kTimestamp / 1000);
-  EXPECT_EQ(begin_event1["pid"].asUInt(), kProcessID);
+  EXPECT_EQ(begin_event1["pid"].asInt(), static_cast<int>(kProcessID));
   EXPECT_EQ(begin_event1["id2"]["local"].asString(), "0xeb");
   EXPECT_EQ(begin_event1["cat"].asString(), kCategory);
   EXPECT_EQ(begin_event1["name"].asString(), kName);
@@ -942,7 +942,7 @@
   Json::Value begin_event2 = result["traceEvents"][1];
   EXPECT_EQ(begin_event2["ph"].asString(), "b");
   EXPECT_EQ(begin_event2["ts"].asInt64(), kTimestamp / 1000);
-  EXPECT_EQ(begin_event2["pid"].asUInt(), kProcessID);
+  EXPECT_EQ(begin_event2["pid"].asInt(), static_cast<int>(kProcessID));
   EXPECT_EQ(begin_event2["id2"]["local"].asString(), "0xeb");
   EXPECT_EQ(begin_event2["cat"].asString(), kCategory);
   EXPECT_EQ(begin_event2["name"].asString(), kName2);
@@ -954,7 +954,7 @@
   Json::Value end_event2 = result["traceEvents"][3];
   EXPECT_EQ(end_event2["ph"].asString(), "e");
   EXPECT_EQ(end_event2["ts"].asInt64(), (kTimestamp + kDuration) / 1000);
-  EXPECT_EQ(end_event2["pid"].asUInt(), kProcessID);
+  EXPECT_EQ(end_event2["pid"].asInt(), static_cast<int>(kProcessID));
   EXPECT_EQ(end_event2["id2"]["local"].asString(), "0xeb");
   EXPECT_EQ(end_event2["cat"].asString(), kCategory);
   EXPECT_EQ(end_event2["name"].asString(), kName);
@@ -966,7 +966,7 @@
   Json::Value end_event1 = result["traceEvents"][3];
   EXPECT_EQ(end_event1["ph"].asString(), "e");
   EXPECT_EQ(end_event1["ts"].asInt64(), (kTimestamp + kDuration) / 1000);
-  EXPECT_EQ(end_event1["pid"].asUInt(), kProcessID);
+  EXPECT_EQ(end_event1["pid"].asInt(), static_cast<int>(kProcessID));
   EXPECT_EQ(end_event1["id2"]["local"].asString(), "0xeb");
   EXPECT_EQ(end_event1["cat"].asString(), kCategory);
   EXPECT_EQ(end_event1["name"].asString(), kName);
@@ -1014,7 +1014,7 @@
   EXPECT_EQ(begin_event["ts"].asInt64(), kTimestamp / 1000);
   EXPECT_EQ(begin_event["tts"].asInt64(), kThreadTimestamp / 1000);
   EXPECT_EQ(begin_event["use_async_tts"].asInt(), 1);
-  EXPECT_EQ(begin_event["pid"].asUInt(), kProcessID);
+  EXPECT_EQ(begin_event["pid"].asInt(), static_cast<int>(kProcessID));
   EXPECT_EQ(begin_event["id2"]["local"].asString(), "0xeb");
   EXPECT_EQ(begin_event["cat"].asString(), kCategory);
   EXPECT_EQ(begin_event["name"].asString(), kName);
@@ -1025,7 +1025,7 @@
   EXPECT_EQ(end_event["tts"].asInt64(),
             (kThreadTimestamp + kThreadDuration) / 1000);
   EXPECT_EQ(end_event["use_async_tts"].asInt(), 1);
-  EXPECT_EQ(end_event["pid"].asUInt(), kProcessID);
+  EXPECT_EQ(end_event["pid"].asInt(), static_cast<int>(kProcessID));
   EXPECT_EQ(end_event["id2"]["local"].asString(), "0xeb");
   EXPECT_EQ(end_event["cat"].asString(), kCategory);
   EXPECT_EQ(end_event["name"].asString(), kName);
@@ -1069,7 +1069,7 @@
   EXPECT_EQ(begin_event["ts"].asInt64(), kTimestamp / 1000);
   EXPECT_EQ(begin_event["tts"].asInt64(), kThreadTimestamp / 1000);
   EXPECT_EQ(begin_event["use_async_tts"].asInt(), 1);
-  EXPECT_EQ(begin_event["pid"].asUInt(), kProcessID);
+  EXPECT_EQ(begin_event["pid"].asInt(), static_cast<int>(kProcessID));
   EXPECT_EQ(begin_event["id2"]["local"].asString(), "0xeb");
   EXPECT_EQ(begin_event["cat"].asString(), kCategory);
   EXPECT_EQ(begin_event["name"].asString(), kName);
@@ -1116,7 +1116,7 @@
   Json::Value event = result["traceEvents"][0];
   EXPECT_EQ(event["ph"].asString(), "n");
   EXPECT_EQ(event["ts"].asInt64(), kTimestamp / 1000);
-  EXPECT_EQ(event["pid"].asUInt(), kProcessID);
+  EXPECT_EQ(event["pid"].asInt(), static_cast<int>(kProcessID));
   EXPECT_EQ(event["id2"]["local"].asString(), "0xeb");
   EXPECT_EQ(event["cat"].asString(), kCategory);
   EXPECT_EQ(event["name"].asString(), kName);
@@ -1204,7 +1204,7 @@
   EXPECT_EQ(event["tdur"].asInt64(), kThreadDuration / 1000);
   EXPECT_EQ(event["ticount"].asInt64(), kThreadInstructionCount);
   EXPECT_EQ(event["tidelta"].asInt64(), kThreadInstructionDelta);
-  EXPECT_EQ(event["tid"].asUInt(), kThreadID);
+  EXPECT_EQ(event["tid"].asInt(), static_cast<int>(kThreadID));
   EXPECT_EQ(event["cat"].asString(), kCategory);
   EXPECT_EQ(event["name"].asString(), kName);
   EXPECT_EQ(event["use_async_tts"].asInt(), 1);
@@ -1328,7 +1328,7 @@
   EXPECT_EQ(event["ph"].asString(), "n");
   EXPECT_EQ(event["id"].asString(), "0x1");
   EXPECT_EQ(event["ts"].asInt64(), kTimestamp / 1000);
-  EXPECT_EQ(event["tid"].asUInt(), kThreadID);
+  EXPECT_EQ(event["tid"].asInt(), static_cast<int>(kThreadID));
   EXPECT_EQ(event["cat"].asString(), "disabled_by_default-cpu_profiler");
   EXPECT_EQ(event["name"].asString(), "StackCpuSampling");
   EXPECT_EQ(event["s"].asString(), "t");
@@ -1472,13 +1472,13 @@
   EXPECT_EQ(result[0]["ph"].asString(), "X");
   EXPECT_EQ(result[0]["ts"].asInt64(), kTimestamp1 / 1000);
   EXPECT_EQ(result[0]["dur"].asInt64(), kDuration / 1000);
-  EXPECT_EQ(result[0]["tid"].asUInt(), kThreadID);
+  EXPECT_EQ(result[0]["tid"].asInt(), static_cast<int>(kThreadID));
   EXPECT_EQ(result[0]["cat"].asString(), kCategory);
   EXPECT_EQ(result[0]["name"].asString(), kName);
   EXPECT_EQ(result[1]["ph"].asString(), "X");
   EXPECT_EQ(result[1]["ts"].asInt64(), kTimestamp2 / 1000);
   EXPECT_EQ(result[1]["dur"].asInt64(), kDuration / 1000);
-  EXPECT_EQ(result[1]["tid"].asUInt(), kThreadID);
+  EXPECT_EQ(result[1]["tid"].asInt(), static_cast<int>(kThreadID));
   EXPECT_EQ(result[1]["cat"].asString(), kCategory);
   EXPECT_EQ(result[1]["name"].asString(), kName);
 }