You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by pa...@apache.org on 2021/12/23 00:08:24 UTC
[beam] branch master updated: [BEAM-13501] playground - add log about processing and precompiled run delay
This is an automated email from the ASF dual-hosted git repository.
pabloem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new c530501 [BEAM-13501] playground - add log about processing and precompiled run delay
new 2b6cb41 Merge pull request #16324 from [BEAM-13501] [Playground] Improve UX
c530501 is described below
commit c5305015758708d2d43d66a8c0692864fb84e00f
Author: Aydar Farrakhov <st...@gmail.com>
AuthorDate: Wed Dec 22 17:02:51 2021 +0300
[BEAM-13501] playground - add log about processing and precompiled run delay
---
.../code_repository/code_repository.dart | 26 ++++++++++++---
.../example_client/grpc_example_client.dart | 3 +-
.../pages/playground/states/playground_state.dart | 21 +++++++++---
.../code_repository/code_repository_test.dart | 38 ++++++++++++++++------
4 files changed, 67 insertions(+), 21 deletions(-)
diff --git a/playground/frontend/lib/modules/editor/repository/code_repository/code_repository.dart b/playground/frontend/lib/modules/editor/repository/code_repository/code_repository.dart
index 3d73d73..15c4f40 100644
--- a/playground/frontend/lib/modules/editor/repository/code_repository/code_repository.dart
+++ b/playground/frontend/lib/modules/editor/repository/code_repository/code_repository.dart
@@ -30,6 +30,7 @@ const kTimeoutErrorText =
'to try examples without timeout limitation.';
const kUnknownErrorText =
'Something went wrong. Please try again later or create a jira ticket';
+const kProcessingStartedText = 'The processing has started';
class CodeRepository {
late final CodeClient _client;
@@ -40,10 +41,18 @@ class CodeRepository {
Stream<RunCodeResult> runCode(RunCodeRequestWrapper request) async* {
try {
- yield RunCodeResult(status: RunCodeStatus.preparation);
+ final initResult = RunCodeResult(
+ status: RunCodeStatus.preparation,
+ log: kProcessingStartedText,
+ );
+ yield initResult;
var runCodeResponse = await _client.runCode(request);
final pipelineUuid = runCodeResponse.pipelineUuid;
- yield* _checkPipelineExecution(pipelineUuid, request);
+ yield* _checkPipelineExecution(
+ pipelineUuid,
+ request,
+ prevResult: initResult,
+ );
} on RunCodeError catch (error) {
yield RunCodeResult(
status: RunCodeStatus.unknownError,
@@ -100,7 +109,11 @@ class CodeRepository {
pipelineUuid,
request,
);
- return RunCodeResult(status: status, output: compileOutput.output);
+ return RunCodeResult(
+ status: status,
+ output: compileOutput.output,
+ log: prevLog,
+ );
case RunCodeStatus.timeout:
return RunCodeResult(
status: status,
@@ -109,12 +122,17 @@ class CodeRepository {
);
case RunCodeStatus.runError:
final output = await _client.getRunErrorOutput(pipelineUuid, request);
- return RunCodeResult(status: status, output: output.output);
+ return RunCodeResult(
+ status: status,
+ output: output.output,
+ log: prevLog,
+ );
case RunCodeStatus.unknownError:
return RunCodeResult(
status: status,
errorMessage: kUnknownErrorText,
output: kUnknownErrorText,
+ log: prevLog,
);
case RunCodeStatus.executing:
case RunCodeStatus.finished:
diff --git a/playground/frontend/lib/modules/examples/repositories/example_client/grpc_example_client.dart b/playground/frontend/lib/modules/examples/repositories/example_client/grpc_example_client.dart
index 16c63b8..6253b81 100644
--- a/playground/frontend/lib/modules/examples/repositories/example_client/grpc_example_client.dart
+++ b/playground/frontend/lib/modules/examples/repositories/example_client/grpc_example_client.dart
@@ -69,8 +69,7 @@ class GrpcExampleClient implements ExampleClient {
@override
Future<OutputResponse> getExampleOutput(GetExampleRequestWrapper request) {
return _runSafely(
- () =>
- createClient(request.sdk)
+ () => createClient(request.sdk)
.getPrecompiledObjectOutput(
_getExampleOutputRequestToGrpcRequest(request))
.then((response) =>
diff --git a/playground/frontend/lib/pages/playground/states/playground_state.dart b/playground/frontend/lib/pages/playground/states/playground_state.dart
index b2021ca..6308958 100644
--- a/playground/frontend/lib/pages/playground/states/playground_state.dart
+++ b/playground/frontend/lib/pages/playground/states/playground_state.dart
@@ -27,6 +27,7 @@ import 'package:playground/modules/examples/models/example_model.dart';
import 'package:playground/modules/sdk/models/sdk.dart';
const kTitleLength = 15;
+const kPrecompiledDelay = Duration(seconds: 1);
const kTitle = 'Catalog';
const kPipelineOptionsParseError =
'Failed to parse pipeline options, please check the format (--key1 value1 --key2 value2)';
@@ -123,11 +124,7 @@ class PlaygroundState with ChangeNotifier {
if (_selectedExample?.source == source &&
_selectedExample?.outputs != null &&
!_arePipelineOptionsChanges) {
- _result = RunCodeResult(
- status: RunCodeStatus.finished,
- output: _selectedExample!.outputs,
- );
- notifyListeners();
+ _showPrecompiledResult();
} else {
final request = RunCodeRequestWrapper(
code: source,
@@ -147,4 +144,18 @@ class PlaygroundState with ChangeNotifier {
bool get _arePipelineOptionsChanges {
return pipelineOptions != (_selectedExample?.pipelineOptions ?? '');
}
+
+ _showPrecompiledResult() async {
+ _result = RunCodeResult(
+ status: RunCodeStatus.preparation,
+ );
+ notifyListeners();
+ // add a little delay to improve user experience
+ await Future.delayed(kPrecompiledDelay);
+ _result = RunCodeResult(
+ status: RunCodeStatus.finished,
+ output: _selectedExample!.outputs,
+ );
+ notifyListeners();
+ }
}
diff --git a/playground/frontend/test/modules/editor/repository/code_repository/code_repository_test.dart b/playground/frontend/test/modules/editor/repository/code_repository/code_repository_test.dart
index 9df71d4..3ab75a1 100644
--- a/playground/frontend/test/modules/editor/repository/code_repository/code_repository_test.dart
+++ b/playground/frontend/test/modules/editor/repository/code_repository/code_repository_test.dart
@@ -85,11 +85,14 @@ void main() {
await expectLater(
stream,
emitsInOrder([
- RunCodeResult(status: RunCodeStatus.preparation),
+ RunCodeResult(
+ status: RunCodeStatus.preparation,
+ log: kProcessingStartedText,
+ ),
RunCodeResult(
status: RunCodeStatus.finished,
output: kRunOutput,
- log: kLogOutput,
+ log: kProcessingStartedText + kLogOutput,
),
]),
);
@@ -124,9 +127,15 @@ void main() {
await expectLater(
stream,
emitsInOrder([
- RunCodeResult(status: RunCodeStatus.preparation),
RunCodeResult(
- status: RunCodeStatus.compileError, output: kCompileOutput),
+ status: RunCodeStatus.preparation,
+ log: kProcessingStartedText,
+ ),
+ RunCodeResult(
+ status: RunCodeStatus.compileError,
+ output: kCompileOutput,
+ log: kProcessingStartedText,
+ ),
]),
);
});
@@ -162,9 +171,15 @@ void main() {
await expectLater(
stream,
emitsInOrder([
- RunCodeResult(status: RunCodeStatus.preparation),
RunCodeResult(
- status: RunCodeStatus.runError, output: kRunErrorOutput),
+ status: RunCodeStatus.preparation,
+ log: kProcessingStartedText,
+ ),
+ RunCodeResult(
+ status: RunCodeStatus.runError,
+ output: kRunErrorOutput,
+ log: kProcessingStartedText,
+ ),
]),
);
});
@@ -203,21 +218,24 @@ void main() {
await expectLater(
stream,
emitsInOrder([
- RunCodeResult(status: RunCodeStatus.preparation),
+ RunCodeResult(
+ status: RunCodeStatus.preparation,
+ log: kProcessingStartedText,
+ ),
RunCodeResult(
status: RunCodeStatus.executing,
output: kRunOutput,
- log: kLogOutput,
+ log: kProcessingStartedText + kLogOutput,
),
RunCodeResult(
status: RunCodeStatus.executing,
output: kRunOutput * 2,
- log: kLogOutput * 2,
+ log: kProcessingStartedText + kLogOutput * 2,
),
RunCodeResult(
status: RunCodeStatus.finished,
output: kRunOutput * 3,
- log: kLogOutput * 3,
+ log: kProcessingStartedText + kLogOutput * 3,
),
]),
);