Use newer log in balls shot replay test

Signed-off-by: milind-u <milind.upadhyay@gmail.com>
Change-Id: Ib0c666784a1e69eed14e9ede4518403ac2487058
diff --git a/WORKSPACE b/WORKSPACE
index db6dba9..23c4580 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -733,8 +733,8 @@
     visibility = ["//visibility:public"],
 )
     """,
-    sha256 = "e7037a374a7bf315b25058f0e9fbbf3e99c425e3a8e7d51edfc50e3f2a36a182",
-    url = "https://www.frc971.org/Build-Dependencies/2021-09-04_superstructure_shoot_balls.tar.gz",
+    sha256 = "2b9a3ecc83f2aba89a1909ae38fe51e6718a5b4d0e7c131846dfb2845df9cd19",
+    url = "https://www.frc971.org/Build-Dependencies/2021-10-03_superstructure_shoot_balls.tar.gz",
 )
 
 # OpenCV armhf (for raspberry pi)
diff --git a/y2020/control_loops/superstructure/superstructure_lib_test.cc b/y2020/control_loops/superstructure/superstructure_lib_test.cc
index 2e6ec08..2a9a866 100644
--- a/y2020/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2020/control_loops/superstructure/superstructure_lib_test.cc
@@ -1172,8 +1172,10 @@
     test_event_loop_ = reader_.event_loop_factory()->MakeEventLoop(
         "superstructure_replay_test", roborio_);
 
-    status_fetcher_ = test_event_loop_->MakeFetcher<Status>("/superstructure");
-    goal_sender_ = test_event_loop_->MakeSender<Goal>("/superstructure");
+    drivetrain_status_sender_ =
+        test_event_loop_->MakeSender<DrivetrainStatus>("/drivetrain");
+    superstructure_status_fetcher_ =
+        test_event_loop_->MakeFetcher<Status>("/superstructure");
 
     if (!FLAGS_output_file.empty()) {
       unlink(FLAGS_output_file.c_str());
@@ -1193,32 +1195,49 @@
   std::unique_ptr<aos::EventLoop> logger_event_loop_;
   std::unique_ptr<aos::logger::Logger> logger_;
 
-  aos::Sender<y2020::control_loops::superstructure::Goal> goal_sender_;
-  aos::Fetcher<y2020::control_loops::superstructure::Status> status_fetcher_;
+  aos::Sender<DrivetrainStatus> drivetrain_status_sender_;
+  aos::Fetcher<Status> superstructure_status_fetcher_;
 };
 
 // Tests that balls_shot is updated correctly with a real log.
 TEST_F(SuperstructureReplayTest, BallsShotReplay) {
   Superstructure superstructure(superstructure_event_loop_.get());
-  // TODO(milind): remove this after the new log is uploaded
+
+  constexpr double kShotAngle = 1.0;
+  constexpr double kShotDistance = 2.5;
+  const auto target = turret::OuterPortPose(aos::Alliance::kRed);
+
+  // There was no target when this log was taken so send a position within range
+  // of the interpolation table.
   test_event_loop_->AddPhasedLoop(
       [&](int) {
-        auto builder = goal_sender_.MakeBuilder();
-        auto shooter_goal_builder = builder.MakeBuilder<ShooterGoal>();
-        shooter_goal_builder.add_velocity_finisher(304);
-        const auto shooter_goal_offset = shooter_goal_builder.Finish();
+        auto builder = drivetrain_status_sender_.MakeBuilder();
 
-        auto goal_builder = builder.MakeBuilder<Goal>();
-        goal_builder.add_shooter(shooter_goal_offset);
-        goal_builder.add_shooter_tracking(false);
-        builder.Send(goal_builder.Finish());
+        const auto localizer_offset =
+            builder
+                .MakeBuilder<
+                    frc971::control_loops::drivetrain::LocalizerState>()
+                .Finish();
+
+        auto drivetrain_status_builder =
+            builder.MakeBuilder<DrivetrainStatus>();
+
+        // Set the robot up at kShotAngle off from the target, kShotDistance
+        // away.
+        drivetrain_status_builder.add_x(target.abs_pos().x() +
+                                        std::cos(kShotAngle) * kShotDistance);
+        drivetrain_status_builder.add_y(target.abs_pos().y() +
+                                        std::sin(kShotAngle) * kShotDistance);
+        drivetrain_status_builder.add_localizer(localizer_offset);
+
+        ASSERT_TRUE(builder.Send(drivetrain_status_builder.Finish()));
       },
       frc971::controls::kLoopFrequency);
 
   reader_.event_loop_factory()->Run();
 
-  ASSERT_TRUE(status_fetcher_.Fetch());
-  EXPECT_EQ(status_fetcher_->shooter()->balls_shot(), 3);
+  ASSERT_TRUE(superstructure_status_fetcher_.Fetch());
+  EXPECT_EQ(superstructure_status_fetcher_->shooter()->balls_shot(), 3);
 }
 
 class SuperstructureAllianceTest