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,
         ),
       ]),
     );