diff --git a/Android.bp b/Android.bp
index d985dfd..68c2708 100644
--- a/Android.bp
+++ b/Android.bp
@@ -6457,6 +6457,31 @@
   ],
 }
 
+// GN: //src/trace_processor/importers:common
+filegroup {
+  name: "perfetto_src_trace_processor_importers_common",
+  srcs: [
+    "src/trace_processor/importers/common/args_tracker.cc",
+    "src/trace_processor/importers/common/clock_tracker.cc",
+    "src/trace_processor/importers/common/event_tracker.cc",
+    "src/trace_processor/importers/common/global_args_tracker.cc",
+    "src/trace_processor/importers/common/process_tracker.cc",
+    "src/trace_processor/importers/common/slice_tracker.cc",
+    "src/trace_processor/importers/common/track_tracker.cc",
+  ],
+}
+
+// GN: //src/trace_processor/importers:unittests
+filegroup {
+  name: "perfetto_src_trace_processor_importers_unittests",
+  srcs: [
+    "src/trace_processor/importers/common/clock_tracker_unittest.cc",
+    "src/trace_processor/importers/common/event_tracker_unittest.cc",
+    "src/trace_processor/importers/common/process_tracker_unittest.cc",
+    "src/trace_processor/importers/common/slice_tracker_unittest.cc",
+  ],
+}
+
 // GN: //src/trace_processor:lib
 filegroup {
   name: "perfetto_src_trace_processor_lib",
@@ -6557,13 +6582,6 @@
   srcs: [
     "src/trace_processor/default_modules.cc",
     "src/trace_processor/forwarding_trace_parser.cc",
-    "src/trace_processor/importers/common/args_tracker.cc",
-    "src/trace_processor/importers/common/clock_tracker.cc",
-    "src/trace_processor/importers/common/event_tracker.cc",
-    "src/trace_processor/importers/common/global_args_tracker.cc",
-    "src/trace_processor/importers/common/process_tracker.cc",
-    "src/trace_processor/importers/common/slice_tracker.cc",
-    "src/trace_processor/importers/common/track_tracker.cc",
     "src/trace_processor/importers/ftrace/ftrace_module.cc",
     "src/trace_processor/importers/gzip/gzip_utils.cc",
     "src/trace_processor/importers/json/json_utils.cc",
@@ -6644,10 +6662,7 @@
   srcs: [
     "src/trace_processor/dynamic/experimental_counter_dur_generator_unittest.cc",
     "src/trace_processor/forwarding_trace_parser_unittest.cc",
-    "src/trace_processor/importers/common/clock_tracker_unittest.cc",
-    "src/trace_processor/importers/common/event_tracker_unittest.cc",
-    "src/trace_processor/importers/common/process_tracker_unittest.cc",
-    "src/trace_processor/importers/common/slice_tracker_unittest.cc",
+    "src/trace_processor/importers/ftrace/sched_event_tracker_unittest.cc",
     "src/trace_processor/importers/fuchsia/fuchsia_trace_utils_unittest.cc",
     "src/trace_processor/importers/proto/args_table_utils_unittest.cc",
     "src/trace_processor/importers/proto/heap_graph_tracker_unittest.cc",
@@ -7555,6 +7570,8 @@
     ":perfetto_src_trace_processor_db_unittests",
     ":perfetto_src_trace_processor_export_json",
     ":perfetto_src_trace_processor_ftrace_descriptors",
+    ":perfetto_src_trace_processor_importers_common",
+    ":perfetto_src_trace_processor_importers_unittests",
     ":perfetto_src_trace_processor_lib",
     ":perfetto_src_trace_processor_metrics_lib",
     ":perfetto_src_trace_processor_metrics_unittests",
@@ -7806,6 +7823,7 @@
     ":perfetto_src_trace_processor_db_lib",
     ":perfetto_src_trace_processor_export_json",
     ":perfetto_src_trace_processor_ftrace_descriptors",
+    ":perfetto_src_trace_processor_importers_common",
     ":perfetto_src_trace_processor_lib",
     ":perfetto_src_trace_processor_metrics_lib",
     ":perfetto_src_trace_processor_sqlite_sqlite",
@@ -7922,6 +7940,7 @@
     ":perfetto_src_trace_processor_db_lib",
     ":perfetto_src_trace_processor_export_json",
     ":perfetto_src_trace_processor_ftrace_descriptors",
+    ":perfetto_src_trace_processor_importers_common",
     ":perfetto_src_trace_processor_lib",
     ":perfetto_src_trace_processor_metrics_lib",
     ":perfetto_src_trace_processor_sqlite_sqlite",
diff --git a/BUILD b/BUILD
index 5080adb..e0d45cc 100644
--- a/BUILD
+++ b/BUILD
@@ -713,6 +713,27 @@
     ],
 )
 
+# GN target: //src/trace_processor/importers:common
+filegroup(
+    name = "src_trace_processor_importers_common",
+    srcs = [
+        "src/trace_processor/importers/common/args_tracker.cc",
+        "src/trace_processor/importers/common/args_tracker.h",
+        "src/trace_processor/importers/common/clock_tracker.cc",
+        "src/trace_processor/importers/common/clock_tracker.h",
+        "src/trace_processor/importers/common/event_tracker.cc",
+        "src/trace_processor/importers/common/event_tracker.h",
+        "src/trace_processor/importers/common/global_args_tracker.cc",
+        "src/trace_processor/importers/common/global_args_tracker.h",
+        "src/trace_processor/importers/common/process_tracker.cc",
+        "src/trace_processor/importers/common/process_tracker.h",
+        "src/trace_processor/importers/common/slice_tracker.cc",
+        "src/trace_processor/importers/common/slice_tracker.h",
+        "src/trace_processor/importers/common/track_tracker.cc",
+        "src/trace_processor/importers/common/track_tracker.h",
+    ],
+)
+
 genrule(
     name = "src_trace_processor_metrics_gen_merged_sql_metrics",
     srcs = [
@@ -987,20 +1008,6 @@
         "src/trace_processor/default_modules.h",
         "src/trace_processor/forwarding_trace_parser.cc",
         "src/trace_processor/forwarding_trace_parser.h",
-        "src/trace_processor/importers/common/args_tracker.cc",
-        "src/trace_processor/importers/common/args_tracker.h",
-        "src/trace_processor/importers/common/clock_tracker.cc",
-        "src/trace_processor/importers/common/clock_tracker.h",
-        "src/trace_processor/importers/common/event_tracker.cc",
-        "src/trace_processor/importers/common/event_tracker.h",
-        "src/trace_processor/importers/common/global_args_tracker.cc",
-        "src/trace_processor/importers/common/global_args_tracker.h",
-        "src/trace_processor/importers/common/process_tracker.cc",
-        "src/trace_processor/importers/common/process_tracker.h",
-        "src/trace_processor/importers/common/slice_tracker.cc",
-        "src/trace_processor/importers/common/slice_tracker.h",
-        "src/trace_processor/importers/common/track_tracker.cc",
-        "src/trace_processor/importers/common/track_tracker.h",
         "src/trace_processor/importers/ftrace/ftrace_module.cc",
         "src/trace_processor/importers/ftrace/ftrace_module.h",
         "src/trace_processor/importers/fuchsia/fuchsia_record.h",
@@ -2825,6 +2832,7 @@
         ":src_trace_processor_db_lib",
         ":src_trace_processor_export_json",
         ":src_trace_processor_ftrace_descriptors",
+        ":src_trace_processor_importers_common",
         ":src_trace_processor_lib",
         ":src_trace_processor_metrics_lib",
         ":src_trace_processor_sqlite_sqlite",
@@ -2914,6 +2922,7 @@
         ":src_trace_processor_db_lib",
         ":src_trace_processor_export_json",
         ":src_trace_processor_ftrace_descriptors",
+        ":src_trace_processor_importers_common",
         ":src_trace_processor_lib",
         ":src_trace_processor_metrics_lib",
         ":src_trace_processor_rpc_httpd",
@@ -3081,6 +3090,7 @@
         ":src_trace_processor_db_lib",
         ":src_trace_processor_export_json",
         ":src_trace_processor_ftrace_descriptors",
+        ":src_trace_processor_importers_common",
         ":src_trace_processor_lib",
         ":src_trace_processor_metrics_lib",
         ":src_trace_processor_sqlite_sqlite",
diff --git a/src/trace_processor/BUILD.gn b/src/trace_processor/BUILD.gn
index 1bbf36a..10a4a4f 100644
--- a/src/trace_processor/BUILD.gn
+++ b/src/trace_processor/BUILD.gn
@@ -65,20 +65,6 @@
     "default_modules.h",
     "forwarding_trace_parser.cc",
     "forwarding_trace_parser.h",
-    "importers/common/args_tracker.cc",
-    "importers/common/args_tracker.h",
-    "importers/common/clock_tracker.cc",
-    "importers/common/clock_tracker.h",
-    "importers/common/event_tracker.cc",
-    "importers/common/event_tracker.h",
-    "importers/common/global_args_tracker.cc",
-    "importers/common/global_args_tracker.h",
-    "importers/common/process_tracker.cc",
-    "importers/common/process_tracker.h",
-    "importers/common/slice_tracker.cc",
-    "importers/common/slice_tracker.h",
-    "importers/common/track_tracker.cc",
-    "importers/common/track_tracker.h",
     "importers/ftrace/ftrace_module.cc",
     "importers/ftrace/ftrace_module.h",
     "importers/fuchsia/fuchsia_record.h",
@@ -137,6 +123,7 @@
     "../base",
     "../protozero",
     "containers",
+    "importers:common",
     "storage",
     "tables",
     "types",
@@ -249,6 +236,7 @@
     "../../protos/perfetto/trace/gpu:zero",
     "../../protos/perfetto/trace/interned_data:zero",
     "../protozero",
+    "importers:common",
     "storage",
     "types",
   ]
@@ -301,6 +289,7 @@
       "../base",
       "analysis",
       "db:lib",
+      "importers:common",
       "metrics:lib",
       "sqlite",
       "storage",
@@ -344,10 +333,7 @@
   testonly = true
   sources = [
     "forwarding_trace_parser_unittest.cc",
-    "importers/common/clock_tracker_unittest.cc",
-    "importers/common/event_tracker_unittest.cc",
-    "importers/common/process_tracker_unittest.cc",
-    "importers/common/slice_tracker_unittest.cc",
+    "importers/ftrace/sched_event_tracker_unittest.cc",
     "importers/fuchsia/fuchsia_trace_utils_unittest.cc",
     "importers/proto/args_table_utils_unittest.cc",
     "importers/proto/heap_graph_tracker_unittest.cc",
@@ -370,7 +356,6 @@
     "../../protos/perfetto/trace/ftrace:zero",
     "../../protos/perfetto/trace/gpu:zero",
     "../../protos/perfetto/trace/interned_data:zero",
-    "../../protos/perfetto/trace/profiling:zero",
     "../../protos/perfetto/trace/ps:zero",
     "../../protos/perfetto/trace/sys_stats:zero",
     "../../protos/perfetto/trace/track_event:zero",
@@ -379,6 +364,8 @@
     "../protozero:testing_messages_zero",
     "containers:unittests",
     "db:unittests",
+    "importers:common",
+    "importers:unittests",
     "storage",
     "tables:unittests",
     "types",
diff --git a/src/trace_processor/importers/BUILD.gn b/src/trace_processor/importers/BUILD.gn
new file mode 100644
index 0000000..d3d8482
--- /dev/null
+++ b/src/trace_processor/importers/BUILD.gn
@@ -0,0 +1,61 @@
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("../../../gn/perfetto.gni")
+
+source_set("common") {
+  sources = [
+    "common/args_tracker.cc",
+    "common/args_tracker.h",
+    "common/clock_tracker.cc",
+    "common/clock_tracker.h",
+    "common/event_tracker.cc",
+    "common/event_tracker.h",
+    "common/global_args_tracker.cc",
+    "common/global_args_tracker.h",
+    "common/process_tracker.cc",
+    "common/process_tracker.h",
+    "common/slice_tracker.cc",
+    "common/slice_tracker.h",
+    "common/track_tracker.cc",
+    "common/track_tracker.h",
+  ]
+  deps = [
+    "../../../gn:default_deps",
+    "../../../protos/perfetto/trace:zero",
+    "../../../protos/perfetto/trace/profiling:zero",
+    "../../base",
+    "../storage",
+    "../types",
+  ]
+}
+
+source_set("unittests") {
+  sources = [
+    "common/clock_tracker_unittest.cc",
+    "common/event_tracker_unittest.cc",
+    "common/process_tracker_unittest.cc",
+    "common/slice_tracker_unittest.cc",
+  ]
+  testonly = true
+  deps = [
+    ":common",
+    "../../../gn:default_deps",
+    "../../../gn:gtest_and_gmock",
+    "../../../protos/perfetto/trace:zero",
+    "../../base",
+    "../storage",
+    "../types",
+  ]
+}
diff --git a/src/trace_processor/importers/common/args_tracker.cc b/src/trace_processor/importers/common/args_tracker.cc
index a93c12a..c7a5b97 100644
--- a/src/trace_processor/importers/common/args_tracker.cc
+++ b/src/trace_processor/importers/common/args_tracker.cc
@@ -96,5 +96,9 @@
 
 ArgsTracker::BoundInserter::~BoundInserter() {}
 
+ArgsTracker::BoundInserter::BoundInserter(BoundInserter&&) = default;
+ArgsTracker::BoundInserter& ArgsTracker::BoundInserter::operator=(
+    BoundInserter&&) = default;
+
 }  // namespace trace_processor
 }  // namespace perfetto
diff --git a/src/trace_processor/importers/common/args_tracker.h b/src/trace_processor/importers/common/args_tracker.h
index 327efed..ebcc8f9 100644
--- a/src/trace_processor/importers/common/args_tracker.h
+++ b/src/trace_processor/importers/common/args_tracker.h
@@ -38,6 +38,12 @@
    public:
     virtual ~BoundInserter();
 
+    BoundInserter(BoundInserter&&);
+    BoundInserter& operator=(BoundInserter&&);
+
+    BoundInserter(const BoundInserter&) = delete;
+    BoundInserter& operator=(const BoundInserter&) = delete;
+
     // Adds an arg with the same key and flat_key.
     BoundInserter& AddArg(
         StringId key,
diff --git a/src/trace_processor/importers/common/event_tracker_unittest.cc b/src/trace_processor/importers/common/event_tracker_unittest.cc
index 081b40f..66fc899 100644
--- a/src/trace_processor/importers/common/event_tracker_unittest.cc
+++ b/src/trace_processor/importers/common/event_tracker_unittest.cc
@@ -20,7 +20,6 @@
 #include "src/trace_processor/importers/common/args_tracker.h"
 #include "src/trace_processor/importers/common/process_tracker.h"
 #include "src/trace_processor/importers/common/track_tracker.h"
-#include "src/trace_processor/importers/ftrace/sched_event_tracker.h"
 #include "test/gtest_and_gmock.h"
 
 namespace perfetto {
@@ -40,78 +39,12 @@
     context.process_tracker.reset(new ProcessTracker(&context));
     context.event_tracker.reset(new EventTracker(&context));
     context.track_tracker.reset(new TrackTracker(&context));
-    sched_tracker = SchedEventTracker::GetOrCreate(&context);
   }
 
  protected:
   TraceProcessorContext context;
-  SchedEventTracker* sched_tracker;
 };
 
-TEST_F(EventTrackerTest, InsertSecondSched) {
-  uint32_t cpu = 3;
-  int64_t timestamp = 100;
-  uint32_t pid_1 = 2;
-  int64_t prev_state = 32;
-  static const char kCommProc1[] = "process1";
-  static const char kCommProc2[] = "process2";
-  uint32_t pid_2 = 4;
-  int32_t prio = 1024;
-
-  sched_tracker->PushSchedSwitch(cpu, timestamp, pid_1, kCommProc2, prio,
-                                 prev_state, pid_2, kCommProc1, prio);
-  ASSERT_EQ(context.storage->sched_slice_table().row_count(), 1ul);
-
-  sched_tracker->PushSchedSwitch(cpu, timestamp + 1, pid_2, kCommProc1, prio,
-                                 prev_state, pid_1, kCommProc2, prio);
-
-  ASSERT_EQ(context.storage->sched_slice_table().row_count(), 2ul);
-
-  const auto& timestamps = context.storage->sched_slice_table().ts();
-  ASSERT_EQ(timestamps[0], timestamp);
-  ASSERT_EQ(context.storage->thread_table().start_ts()[1], base::nullopt);
-
-  auto name =
-      context.storage->GetString(context.storage->thread_table().name()[1]);
-  ASSERT_STREQ(name.c_str(), kCommProc1);
-  ASSERT_EQ(context.storage->sched_slice_table().utid()[0], 1u);
-  ASSERT_EQ(context.storage->sched_slice_table().dur()[0], 1);
-}
-
-TEST_F(EventTrackerTest, InsertThirdSched_SameThread) {
-  uint32_t cpu = 3;
-  int64_t timestamp = 100;
-  int64_t prev_state = 32;
-  static const char kCommProc1[] = "process1";
-  static const char kCommProc2[] = "process2";
-  int32_t prio = 1024;
-
-  sched_tracker->PushSchedSwitch(cpu, timestamp, /*tid=*/4, kCommProc2, prio,
-                                 prev_state,
-                                 /*tid=*/2, kCommProc1, prio);
-  ASSERT_EQ(context.storage->sched_slice_table().row_count(), 1u);
-
-  sched_tracker->PushSchedSwitch(cpu, timestamp + 1, /*tid=*/2, kCommProc1,
-                                 prio, prev_state,
-                                 /*tid=*/4, kCommProc2, prio);
-  sched_tracker->PushSchedSwitch(cpu, timestamp + 11, /*tid=*/4, kCommProc2,
-                                 prio, prev_state,
-                                 /*tid=*/2, kCommProc1, prio);
-  sched_tracker->PushSchedSwitch(cpu, timestamp + 31, /*tid=*/2, kCommProc1,
-                                 prio, prev_state,
-                                 /*tid=*/4, kCommProc2, prio);
-  ASSERT_EQ(context.storage->sched_slice_table().row_count(), 4ul);
-
-  const auto& timestamps = context.storage->sched_slice_table().ts();
-  ASSERT_EQ(timestamps[0], timestamp);
-  ASSERT_EQ(context.storage->thread_table().start_ts()[1], base::nullopt);
-  ASSERT_EQ(context.storage->sched_slice_table().dur()[0], 1u);
-  ASSERT_EQ(context.storage->sched_slice_table().dur()[1], 11u - 1u);
-  ASSERT_EQ(context.storage->sched_slice_table().dur()[2], 31u - 11u);
-  ASSERT_EQ(context.storage->sched_slice_table().utid()[0],
-            context.storage->sched_slice_table().utid()[2]);
-}
-
 TEST_F(EventTrackerTest, CounterDuration) {
   uint32_t cpu = 3;
   int64_t timestamp = 100;
diff --git a/src/trace_processor/importers/common/process_tracker_unittest.cc b/src/trace_processor/importers/common/process_tracker_unittest.cc
index 2f41cc1..f9bad28 100644
--- a/src/trace_processor/importers/common/process_tracker_unittest.cc
+++ b/src/trace_processor/importers/common/process_tracker_unittest.cc
@@ -19,7 +19,6 @@
 #include "perfetto/base/logging.h"
 #include "src/trace_processor/importers/common/args_tracker.h"
 #include "src/trace_processor/importers/common/event_tracker.h"
-#include "src/trace_processor/importers/ftrace/sched_event_tracker.h"
 #include "test/gtest_and_gmock.h"
 
 namespace perfetto {
@@ -89,31 +88,6 @@
   ASSERT_EQ(name, "test");
 }
 
-TEST_F(ProcessTrackerTest, UpdateThreadMatch) {
-  uint32_t cpu = 3;
-  int64_t timestamp = 100;
-  int64_t prev_state = 32;
-  static const char kCommProc1[] = "process1";
-  static const char kCommProc2[] = "process2";
-  int32_t prio = 1024;
-  SchedEventTracker* sched_tracker = SchedEventTracker::GetOrCreate(&context);
-
-  sched_tracker->PushSchedSwitch(cpu, timestamp, /*tid=*/1, kCommProc2, prio,
-                                 prev_state,
-                                 /*tid=*/4, kCommProc1, prio);
-  sched_tracker->PushSchedSwitch(cpu, timestamp + 1, /*tid=*/4, kCommProc1,
-                                 prio, prev_state,
-                                 /*tid=*/1, kCommProc2, prio);
-
-  context.process_tracker->SetProcessMetadata(2, base::nullopt, "test");
-  context.process_tracker->UpdateThread(4, 2);
-
-  ASSERT_EQ(context.storage->thread_table().tid()[1], 4u);
-  ASSERT_EQ(context.storage->thread_table().upid()[1].value(), 1u);
-  ASSERT_EQ(context.storage->process_table().pid()[1], 2u);
-  ASSERT_EQ(context.storage->process_table().start_ts()[1], base::nullopt);
-}
-
 TEST_F(ProcessTrackerTest, UpdateThreadCreate) {
   context.process_tracker->UpdateThread(12, 2);
 
diff --git a/src/trace_processor/importers/ftrace/sched_event_tracker_unittest.cc b/src/trace_processor/importers/ftrace/sched_event_tracker_unittest.cc
new file mode 100644
index 0000000..82363f9
--- /dev/null
+++ b/src/trace_processor/importers/ftrace/sched_event_tracker_unittest.cc
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "src/trace_processor/importers/ftrace/sched_event_tracker.h"
+
+#include "perfetto/base/logging.h"
+#include "src/trace_processor/importers/common/args_tracker.h"
+#include "src/trace_processor/importers/common/event_tracker.h"
+#include "src/trace_processor/importers/common/process_tracker.h"
+#include "test/gtest_and_gmock.h"
+
+namespace perfetto {
+namespace trace_processor {
+namespace {
+
+using ::testing::_;
+using ::testing::InSequence;
+using ::testing::Invoke;
+
+class SchedEventTrackerTest : public ::testing::Test {
+ public:
+  SchedEventTrackerTest() {
+    context.storage.reset(new TraceStorage());
+    context.global_args_tracker.reset(new GlobalArgsTracker(&context));
+    context.args_tracker.reset(new ArgsTracker(&context));
+    context.event_tracker.reset(new EventTracker(&context));
+    context.process_tracker.reset(new ProcessTracker(&context));
+    sched_tracker = SchedEventTracker::GetOrCreate(&context);
+  }
+
+ protected:
+  TraceProcessorContext context;
+  SchedEventTracker* sched_tracker;
+};
+
+TEST_F(SchedEventTrackerTest, InsertSecondSched) {
+  uint32_t cpu = 3;
+  int64_t timestamp = 100;
+  uint32_t pid_1 = 2;
+  int64_t prev_state = 32;
+  static const char kCommProc1[] = "process1";
+  static const char kCommProc2[] = "process2";
+  uint32_t pid_2 = 4;
+  int32_t prio = 1024;
+
+  sched_tracker->PushSchedSwitch(cpu, timestamp, pid_1, kCommProc2, prio,
+                                 prev_state, pid_2, kCommProc1, prio);
+  ASSERT_EQ(context.storage->sched_slice_table().row_count(), 1ul);
+
+  sched_tracker->PushSchedSwitch(cpu, timestamp + 1, pid_2, kCommProc1, prio,
+                                 prev_state, pid_1, kCommProc2, prio);
+
+  ASSERT_EQ(context.storage->sched_slice_table().row_count(), 2ul);
+
+  const auto& timestamps = context.storage->sched_slice_table().ts();
+  ASSERT_EQ(timestamps[0], timestamp);
+  ASSERT_EQ(context.storage->thread_table().start_ts()[1], base::nullopt);
+
+  auto name =
+      context.storage->GetString(context.storage->thread_table().name()[1]);
+  ASSERT_STREQ(name.c_str(), kCommProc1);
+  ASSERT_EQ(context.storage->sched_slice_table().utid()[0], 1u);
+  ASSERT_EQ(context.storage->sched_slice_table().dur()[0], 1);
+}
+
+TEST_F(SchedEventTrackerTest, InsertThirdSched_SameThread) {
+  uint32_t cpu = 3;
+  int64_t timestamp = 100;
+  int64_t prev_state = 32;
+  static const char kCommProc1[] = "process1";
+  static const char kCommProc2[] = "process2";
+  int32_t prio = 1024;
+
+  sched_tracker->PushSchedSwitch(cpu, timestamp, /*tid=*/4, kCommProc2, prio,
+                                 prev_state,
+                                 /*tid=*/2, kCommProc1, prio);
+  ASSERT_EQ(context.storage->sched_slice_table().row_count(), 1u);
+
+  sched_tracker->PushSchedSwitch(cpu, timestamp + 1, /*tid=*/2, kCommProc1,
+                                 prio, prev_state,
+                                 /*tid=*/4, kCommProc2, prio);
+  sched_tracker->PushSchedSwitch(cpu, timestamp + 11, /*tid=*/4, kCommProc2,
+                                 prio, prev_state,
+                                 /*tid=*/2, kCommProc1, prio);
+  sched_tracker->PushSchedSwitch(cpu, timestamp + 31, /*tid=*/2, kCommProc1,
+                                 prio, prev_state,
+                                 /*tid=*/4, kCommProc2, prio);
+  ASSERT_EQ(context.storage->sched_slice_table().row_count(), 4ul);
+
+  const auto& timestamps = context.storage->sched_slice_table().ts();
+  ASSERT_EQ(timestamps[0], timestamp);
+  ASSERT_EQ(context.storage->thread_table().start_ts()[1], base::nullopt);
+  ASSERT_EQ(context.storage->sched_slice_table().dur()[0], 1u);
+  ASSERT_EQ(context.storage->sched_slice_table().dur()[1], 11u - 1u);
+  ASSERT_EQ(context.storage->sched_slice_table().dur()[2], 31u - 11u);
+  ASSERT_EQ(context.storage->sched_slice_table().utid()[0],
+            context.storage->sched_slice_table().utid()[2]);
+}
+
+TEST_F(SchedEventTrackerTest, UpdateThreadMatch) {
+  uint32_t cpu = 3;
+  int64_t timestamp = 100;
+  int64_t prev_state = 32;
+  static const char kCommProc1[] = "process1";
+  static const char kCommProc2[] = "process2";
+  int32_t prio = 1024;
+
+  sched_tracker->PushSchedSwitch(cpu, timestamp, /*tid=*/1, kCommProc2, prio,
+                                 prev_state,
+                                 /*tid=*/4, kCommProc1, prio);
+  sched_tracker->PushSchedSwitch(cpu, timestamp + 1, /*tid=*/4, kCommProc1,
+                                 prio, prev_state,
+                                 /*tid=*/1, kCommProc2, prio);
+
+  context.process_tracker->SetProcessMetadata(2, base::nullopt, "test");
+  context.process_tracker->UpdateThread(4, 2);
+
+  ASSERT_EQ(context.storage->thread_table().tid()[1], 4u);
+  ASSERT_EQ(context.storage->thread_table().upid()[1].value(), 1u);
+  ASSERT_EQ(context.storage->process_table().pid()[1], 2u);
+  ASSERT_EQ(context.storage->process_table().start_ts()[1], base::nullopt);
+}
+
+}  // namespace
+}  // namespace trace_processor
+}  // namespace perfetto
