// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter_driver/flutter_driver.dart'; import 'package:flutter_driver/src/driver/memory_summarizer.dart'; import '../common.dart'; TimelineEvent newGPUTraceEvent(double ms) => TimelineEvent({ 'name': 'AllocatorVK', 'ph': 'b', 'args': {'MemoryBudgetUsageMB': ms.toString()}, }); TimelineEvent newMetalGPUTraceEvent(double ms) => TimelineEvent({ 'name': 'AllocatorMTL', 'ph': 'b', 'args': {'MemoryBudgetUsageMB': ms.toString()}, }); void main() { test('Can process GPU memory usage times.', () { final summarizer = GPUMemorySumarizer([ newGPUTraceEvent(1024), newGPUTraceEvent(1024), newGPUTraceEvent(512), newGPUTraceEvent(2048), ]); expect(summarizer.computeAverageMemoryUsage(), closeTo(1152, 0.1)); expect(summarizer.computePercentileMemoryUsage(50.0), closeTo(1024, 0.1)); expect(summarizer.computeWorstMemoryUsage(), 2048); }); test('Can process Metal GPU memory usage times.', () { final summarizer = GPUMemorySumarizer([ newMetalGPUTraceEvent(1024), newMetalGPUTraceEvent(1024), newMetalGPUTraceEvent(512), newMetalGPUTraceEvent(2048), ]); expect(summarizer.computeAverageMemoryUsage(), closeTo(1152, 0.1)); expect(summarizer.computePercentileMemoryUsage(50.0), closeTo(1024, 0.1)); expect(summarizer.computeWorstMemoryUsage(), 2048); }); }