Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
f7b2d6e7
Unverified
Commit
f7b2d6e7
authored
Nov 30, 2017
by
Ian Hickson
Committed by
GitHub
Nov 30, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Try to make this test less flaky. (#13254)
parent
c358898a
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
39 deletions
+53
-39
main.dart
dev/integration_tests/external_ui/lib/main.dart
+50
-36
main_test.dart
dev/integration_tests/external_ui/test_driver/main_test.dart
+3
-3
No files found.
dev/integration_tests/external_ui/lib/main.dart
View file @
f7b2d6e7
...
...
@@ -10,6 +10,7 @@ import 'package:flutter_driver/driver_extension.dart';
void
main
(
)
{
enableFlutterDriverExtension
();
debugPrint
(
'Application starting...'
);
runApp
(
new
MyApp
());
}
...
...
@@ -41,6 +42,7 @@ Widget builds: $_widgetBuilds''';
Future
<
Null
>
_nextState
()
async
{
switch
(
_state
)
{
case
FrameState
.
initial
:
debugPrint
(
'Starting .5x speed test...'
);
_widgetBuilds
=
0
;
_summary
=
'Producing texture frames at .5x speed...'
;
_state
=
FrameState
.
slow
;
...
...
@@ -48,12 +50,14 @@ Widget builds: $_widgetBuilds''';
channel
.
invokeMethod
(
'start'
,
_flutterFrameRate
~/
2
);
break
;
case
FrameState
.
slow
:
debugPrint
(
'Stopping .5x speed test...'
);
await
channel
.
invokeMethod
(
'stop'
);
await
_summarizeStats
();
_icon
=
Icons
.
fast_forward
;
_state
=
FrameState
.
afterSlow
;
break
;
case
FrameState
.
afterSlow
:
debugPrint
(
'Starting 2x speed test...'
);
_widgetBuilds
=
0
;
_summary
=
'Producing texture frames at 2x speed...'
;
_state
=
FrameState
.
fast
;
...
...
@@ -61,12 +65,14 @@ Widget builds: $_widgetBuilds''';
channel
.
invokeMethod
(
'start'
,
(
_flutterFrameRate
*
2
).
toInt
());
break
;
case
FrameState
.
fast
:
debugPrint
(
'Stopping 2x speed test...'
);
await
channel
.
invokeMethod
(
'stop'
);
await
_summarizeStats
();
_state
=
FrameState
.
afterFast
;
_icon
=
Icons
.
replay
;
break
;
case
FrameState
.
afterFast
:
debugPrint
(
'Test complete.'
);
_summary
=
'Press play to start again'
;
_state
=
FrameState
.
initial
;
_icon
=
Icons
.
play_arrow
;
...
...
@@ -81,26 +87,34 @@ Widget builds: $_widgetBuilds''';
_calibrate
();
}
static
const
int
calibrationTickCount
=
600
;
/// Measures Flutter's frame rate.
Future
<
Null
>
_calibrate
()
async
{
await
new
Future
<
Null
>.
delayed
(
const
Duration
(
milliseconds:
200
));
debugPrint
(
'Awaiting calm (3 second pause)...'
);
await
new
Future
<
Null
>.
delayed
(
const
Duration
(
milliseconds:
3000
));
debugPrint
(
'Calibrating...'
);
DateTime
startTime
;
int
tickCount
=
0
;
Ticker
ticker
;
ticker
=
createTicker
((
Duration
_
)
{
tickCount
++
;
if
(
tickCount
==
120
)
{
ticker
=
createTicker
((
Duration
time
)
{
tickCount
+=
1
;
if
(
tickCount
==
calibrationTickCount
)
{
// about 10 seconds
final
Duration
elapsed
=
new
DateTime
.
now
().
difference
(
startTime
);
ticker
.
stop
();
ticker
.
dispose
();
setState
(()
{
_flutterFrameRate
=
tickCount
*
1000
/
elapsed
.
inMilliseconds
;
debugPrint
(
'Calibrated: frame rate
${_flutterFrameRate.toStringAsFixed(1)}
fps.'
);
_summary
=
'''
Flutter frame rate is
${_flutterFrameRate.toStringAsFixed(1)}
fps.
Press play to produce texture frames.'''
;
_icon
=
Icons
.
play_arrow
;
_state
=
FrameState
.
initial
;
});
}
else
{
if
((
tickCount
%
(
calibrationTickCount
~/
20
))
==
0
)
debugPrint
(
'Calibrating...
${(100.0 * tickCount / calibrationTickCount).floor()}
%'
);
}
});
ticker
.
start
();
...
...
@@ -113,7 +127,7 @@ Press play to produce texture frames.''';
@override
Widget
build
(
BuildContext
context
)
{
_widgetBuilds
++
;
_widgetBuilds
+=
1
;
return
new
MaterialApp
(
home:
new
Scaffold
(
body:
new
Center
(
...
...
dev/integration_tests/external_ui/test_driver/main_test.dart
View file @
f7b2d6e7
...
...
@@ -8,7 +8,7 @@ import 'package:test/test.dart';
final
RegExp
calibrationRegExp
=
new
RegExp
(
'Flutter frame rate is (.*)fps'
);
final
RegExp
statsRegExp
=
new
RegExp
(
'Produced: (.*)fps
\n
Consumed: (.*)fps
\n
Widget builds: (.*)'
);
const
Duration
samplingTime
=
const
Duration
(
seconds:
3
);
const
Duration
samplingTime
=
const
Duration
(
seconds:
8
);
Future
<
Null
>
main
()
async
{
group
(
'texture suite'
,
()
{
...
...
@@ -28,7 +28,7 @@ Future<Null> main() async {
final
SerializableFinder
summary
=
find
.
byValueKey
(
'summary'
);
// Wait for calibration to complete and fab to appear.
await
driver
.
waitFor
(
fab
,
timeout:
const
Duration
(
seconds:
1
0
));
await
driver
.
waitFor
(
fab
,
timeout:
const
Duration
(
seconds:
4
0
));
final
String
calibrationResult
=
await
driver
.
getText
(
summary
);
final
Match
matchCalibration
=
calibrationRegExp
.
matchAsPrefix
(
calibrationResult
);
...
...
@@ -58,7 +58,7 @@ Future<Null> main() async {
expect
(
double
.
parse
(
matchFast
.
group
(
1
)),
closeTo
(
flutterFrameRate
*
2.0
,
5.0
));
expect
(
double
.
parse
(
matchFast
.
group
(
2
)),
closeTo
(
flutterFrameRate
,
10.0
));
expect
(
int
.
parse
(
matchFast
.
group
(
3
)),
1
);
});
}
,
timeout:
const
Timeout
(
const
Duration
(
minutes:
1
))
);
tearDownAll
(()
async
{
driver
?.
close
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment