Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2db3c1b9 authored by Adithya Srinivasan's avatar Adithya Srinivasan
Browse files

Use MockFrameTracer in unit tests

This change makes sure that MockFrameTracer is used in unittests
wherever FrameTracer logic is embedded in (mainly in
TestableSurfaceFlinger). This is to avoid double initialization of
tracing, that causes undesirable effects that are hard to debug.

Bug: 173636249
Test: libsurfaceflinger_unittest (without filter. Test the whole suite)
Change-Id: Iffa0696acde091ed4ebd300ac950544925824bea
parent ac5d3624
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -330,7 +330,7 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory, SkipInitializationTag)
      : mFactory(factory),
        mInterceptor(mFactory.createSurfaceInterceptor()),
        mTimeStats(std::make_shared<impl::TimeStats>()),
        mFrameTracer(std::make_unique<FrameTracer>()),
        mFrameTracer(mFactory.createFrameTracer()),
        mFrameTimeline(std::make_unique<frametimeline::impl::FrameTimeline>(mTimeStats)),
        mEventQueue(mFactory.createMessageQueue()),
        mCompositionEngine(mFactory.createCompositionEngine()),
+4 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include "ContainerLayer.h"
#include "DisplayDevice.h"
#include "EffectLayer.h"
#include "FrameTracer/FrameTracer.h"
#include "Layer.h"
#include "MonitoredProducer.h"
#include "NativeWindowSurface.h"
@@ -130,6 +131,9 @@ sp<EffectLayer> DefaultFactory::createEffectLayer(const LayerCreationArgs& args)
    return new EffectLayer(args);
}

std::unique_ptr<FrameTracer> DefaultFactory::createFrameTracer() {
    return std::make_unique<FrameTracer>();
}
} // namespace android::surfaceflinger

// TODO(b/129481165): remove the #pragma below and fix conversion issues
+1 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ public:
    sp<BufferStateLayer> createBufferStateLayer(const LayerCreationArgs& args) override;
    sp<EffectLayer> createEffectLayer(const LayerCreationArgs& args) override;
    sp<ContainerLayer> createContainerLayer(const LayerCreationArgs& args) override;
    std::unique_ptr<FrameTracer> createFrameTracer() override;
};

} // namespace android::surfaceflinger
+2 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ class BufferLayerConsumer;
class EffectLayer;
class ContainerLayer;
class DisplayDevice;
class FrameTracer;
class GraphicBuffer;
class HWComposer;
class IGraphicBufferConsumer;
@@ -100,6 +101,7 @@ public:
    virtual sp<BufferStateLayer> createBufferStateLayer(const LayerCreationArgs& args) = 0;
    virtual sp<EffectLayer> createEffectLayer(const LayerCreationArgs& args) = 0;
    virtual sp<ContainerLayer> createContainerLayer(const LayerCreationArgs& args) = 0;
    virtual std::unique_ptr<FrameTracer> createFrameTracer() = 0;

protected:
    ~Factory() = default;
+6 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include "DisplayDevice.h"
#include "EffectLayer.h"
#include "FakeVsyncConfiguration.h"
#include "FrameTracer/FrameTracer.h"
#include "Layer.h"
#include "NativeWindowSurface.h"
#include "Scheduler/MessageQueue.h"
@@ -41,6 +42,7 @@
#include "TestableScheduler.h"
#include "mock/DisplayHardware/MockDisplay.h"
#include "mock/MockDisplayIdGenerator.h"
#include "mock/MockFrameTracer.h"

namespace android {

@@ -148,6 +150,10 @@ public:
        return nullptr;
    }

    std::unique_ptr<FrameTracer> createFrameTracer() override {
        return std::make_unique<mock::FrameTracer>();
    }

    using CreateBufferQueueFunction =
            std::function<void(sp<IGraphicBufferProducer>* /* outProducer */,
                               sp<IGraphicBufferConsumer>* /* outConsumer */,