mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fabric: Basic tests for MountingTelemetry
Summary: Some tests which will be useful for the next diff. Changelog: [Internal] Fabric-specific internal change. Reviewed By: mdvacca Differential Revision: D19482255 fbshipit-source-id: 3384662477f750620a37acc4a277a55c2dbd8d0e
This commit is contained in:
committed by
Facebook Github Bot
parent
5b2ea6ec6a
commit
b3a8706c2f
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#include <chrono>
|
||||
#include <thread>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <react/mounting/MountingTelemetry.h>
|
||||
|
||||
using namespace facebook::react;
|
||||
|
||||
#define EXPECT_EQ_WITH_THRESHOLD(a, b, threshold) \
|
||||
EXPECT_TRUE((a >= b - threshold) && (a <= b + threshold))
|
||||
|
||||
TEST(MountingTelemetryTest, normalUseCase) {
|
||||
auto threshold = int64_t{30};
|
||||
auto telemetry = MountingTelemetry{};
|
||||
|
||||
telemetry.willCommit();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
telemetry.willLayout();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||
telemetry.didLayout();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
telemetry.didCommit();
|
||||
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(300));
|
||||
|
||||
telemetry.willMount();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
telemetry.didMount();
|
||||
|
||||
auto commitDuration =
|
||||
telemetry.getCommitEndTime() - telemetry.getCommitStartTime();
|
||||
auto layoutDuration =
|
||||
telemetry.getLayoutEndTime() - telemetry.getLayoutStartTime();
|
||||
auto mountDuration =
|
||||
telemetry.getMountEndTime() - telemetry.getMountStartTime();
|
||||
|
||||
EXPECT_EQ_WITH_THRESHOLD(commitDuration, 400, threshold);
|
||||
EXPECT_EQ_WITH_THRESHOLD(layoutDuration, 200, threshold);
|
||||
EXPECT_EQ_WITH_THRESHOLD(mountDuration, 100, threshold);
|
||||
}
|
||||
|
||||
TEST(MountingTelemetryTest, abnormalUseCases) {
|
||||
// Calling `did` before `will` should crash.
|
||||
EXPECT_DEATH_IF_SUPPORTED(
|
||||
{
|
||||
auto telemetry = MountingTelemetry{};
|
||||
telemetry.didDiff();
|
||||
},
|
||||
"diffStartTime_");
|
||||
|
||||
EXPECT_DEATH_IF_SUPPORTED(
|
||||
{
|
||||
auto telemetry = MountingTelemetry{};
|
||||
telemetry.didCommit();
|
||||
},
|
||||
"commitStartTime_");
|
||||
|
||||
EXPECT_DEATH_IF_SUPPORTED(
|
||||
{
|
||||
auto telemetry = MountingTelemetry{};
|
||||
telemetry.didMount();
|
||||
},
|
||||
"mountStartTime_");
|
||||
|
||||
// Getting `start` *or* `end` timepoints before a pair of `will` and `did`
|
||||
// should crash.
|
||||
EXPECT_DEATH_IF_SUPPORTED(
|
||||
{
|
||||
auto telemetry = MountingTelemetry{};
|
||||
telemetry.willCommit();
|
||||
telemetry.getCommitStartTime();
|
||||
},
|
||||
"commitEndTime_");
|
||||
|
||||
EXPECT_DEATH_IF_SUPPORTED(
|
||||
{
|
||||
auto telemetry = MountingTelemetry{};
|
||||
telemetry.willCommit();
|
||||
telemetry.getCommitEndTime();
|
||||
},
|
||||
"commitEndTime_");
|
||||
}
|
||||
Reference in New Issue
Block a user