Skip to content

Commit 792d500

Browse files
Using arguments to deliver information about Progress
1 parent 73342c5 commit 792d500

File tree

2 files changed

+51
-24
lines changed
  • distribution/lib/Standard/Base/0.0.0-dev/src
  • engine/runtime-integration-tests/src/test/java/org/enso/interpreter/runtime/progress

2 files changed

+51
-24
lines changed

distribution/lib/Standard/Base/0.0.0-dev/src/Logging.enso

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import project.Any.Any
22
import project.Data.Text.Text
3+
import project.Data.Vector.Vector
34
import project.Data.Numbers.Integer
45
import project.Meta
56
import project.Nothing.Nothing
@@ -14,12 +15,7 @@ Any.log_message : Text -> Log_Level -> Any
1415
Any.log_message self ~message:Text level:Log_Level=Log_Level.Info =
1516
type_name = self.to Meta.Type . qualified_name
1617
logger = LoggerFactory.getLogger type_name
17-
case level of
18-
Log_Level.Finest -> logger.trace message
19-
Log_Level.Fine -> logger.debug message
20-
Log_Level.Info -> logger.info message
21-
Log_Level.Warning -> logger.warn message
22-
Log_Level.Severe -> logger.error message
18+
log_impl logger message level []
2319
self
2420

2521
## Infrastructure for reporting logs and progress of computations.
@@ -33,7 +29,7 @@ Any.log_message self ~message:Text level:Log_Level=Log_Level.Info =
3329
together and will report it as a whole to a
3430
[progress displaying facility](https://github.com/enso-org/enso/pull/12126).
3531
type Progress
36-
private Running label:Text max:Integer
32+
private Running label:Text max:Integer logger
3733

3834
## Performs provided `action` while reporting its progress.
3935

@@ -49,8 +45,9 @@ type Progress
4945
- action: function performing the computation while reporting its `Progress`
5046

5147
run label:Text up_to:Integer action:(Progress->Any) -> Any =
52-
progress = Progress.Running label (up_to.max 1)
53-
progress.log_message progress.label+"@"+up_to.to_text Log_Level.Finest # TBD
48+
logger = LoggerFactory.getLogger (Progress.to Meta.Type . qualified_name)
49+
progress = Progress.Running label (up_to.max 1) logger
50+
log_impl logger "INIT {}:{}@{}" Log_Level.Finest [progress, progress.label, progress.max]
5451
res = action progress
5552
progress.advance up_to
5653
res
@@ -68,7 +65,7 @@ type Progress
6865

6966
advance self amount:Integer=1 -> Progress =
7067
add = if amount>=0 then amount else 0
71-
self.log_message self.label+"+"+add.to_text Log_Level.Finest # TBD
68+
log_impl self.logger "ADVANCE {}+{}" Log_Level.Finest [self, add]
7269
self
7370

7471
## Provides additional human readable detail of the status of the computation.
@@ -80,9 +77,12 @@ type Progress
8077
The self value.
8178

8279
log self detail:Text -> Progress =
83-
self.log_message self.label+":"+detail Log_Level.Finest #TBD
80+
log_impl self.logger "LOG {}:{}" Log_Level.Finest [self, detail]
8481
self
8582

83+
## Simple name of the progress
84+
to_text self = "Progress"
85+
8686
## PRIVATE
8787
type Log_Level
8888
## Finest (Trace) level log message.
@@ -99,3 +99,17 @@ type Log_Level
9999

100100
## Severe level log message.
101101
Severe
102+
103+
private log_impl logger ~message:Text level:Log_Level args:Vector =
104+
builder = case level of
105+
Log_Level.Finest -> logger.atTrace
106+
Log_Level.Fine -> logger.atDebug
107+
Log_Level.Info -> logger.atInfo
108+
Log_Level.Warning -> logger.atWarn
109+
Log_Level.Severe -> logger.atError
110+
111+
builder.setMessage message
112+
args.each a->
113+
builder.addArgument a
114+
115+
builder.log

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/runtime/progress/ProgressTest.java

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.enso.interpreter.runtime.progress;
22

33
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertTrue;
45

56
import java.util.stream.Collectors;
67
import org.enso.common.MethodNames;
@@ -67,12 +68,20 @@ public void advanceMultipleTimes() throws Exception {
6768
assertEquals("Only two", 2.0, r1.asDouble(), 0.001);
6869
});
6970
assertEquals("One time: " + oneTimeLog, 4, oneTimeLog.size());
70-
assertEquals("geometric sequence@1", oneTimeLog.get(0).getMessage());
71+
assertEquals("INIT {}:{}@{}", oneTimeLog.get(0).getMessage());
72+
var progressHandle = oneTimeLog.get(0).getArguments().get(0);
73+
assertEquals("geometric sequence", oneTimeLog.get(0).getArguments().get(1));
74+
assertEquals(1L, oneTimeLog.get(0).getArguments().get(2));
75+
assertEquals("LOG {}:{}", oneTimeLog.get(1).getMessage());
76+
assertEquals(progressHandle, oneTimeLog.get(0).getArguments().get(0));
7177
assertEquals(
72-
"geometric sequence:About to compute geometric sequence for 1",
73-
oneTimeLog.get(1).getMessage());
74-
assertEquals("geometric sequence:We have the result 2.0", oneTimeLog.get(2).getMessage());
75-
assertEquals("geometric sequence+1", oneTimeLog.get(3).getMessage());
78+
"About to compute geometric sequence for 1", oneTimeLog.get(1).getArguments().get(1));
79+
assertEquals("LOG {}:{}", oneTimeLog.get(2).getMessage());
80+
assertEquals(progressHandle, oneTimeLog.get(2).getArguments().get(0));
81+
assertEquals("We have the result 2.0", oneTimeLog.get(2).getArguments().get(1));
82+
assertEquals("ADVANCE {}+{}", oneTimeLog.get(3).getMessage());
83+
assertEquals(progressHandle, oneTimeLog.get(0).getArguments().get(0));
84+
assertEquals(1L, oneTimeLog.get(3).getArguments().get(1));
7685

7786
var r2 = geom.execute(2, 2.0, 0.5);
7887
assertEquals("Three", 3.0, r2.asDouble(), 0.001);
@@ -131,17 +140,21 @@ private void performExistingProgressFromJavaWith(Object acc) {
131140
});
132141

133142
assertEquals("Seven messsages " + msgs, 7, msgs.size());
134-
var txt = msgs.stream().map(ObservedMessage::getMessage).collect(Collectors.joining("\n"));
143+
var txt =
144+
msgs.stream().map(ObservedMessage::getFormattedMessage).collect(Collectors.joining("\n"));
145+
146+
assertTrue("Initialization first", msgs.get(0).getMessage().startsWith("INIT "));
147+
135148
assertEquals(
136149
"Initialize five steps. Then five `advance` calls and finally advance to finish.",
137150
"""
138-
from 0 to 5@5
139-
from 0 to 5+1
140-
from 0 to 5+1
141-
from 0 to 5+1
142-
from 0 to 5+1
143-
from 0 to 5+1
144-
from 0 to 5+5""",
151+
INIT Progress:from 0 to 5@5
152+
ADVANCE Progress+1
153+
ADVANCE Progress+1
154+
ADVANCE Progress+1
155+
ADVANCE Progress+1
156+
ADVANCE Progress+1
157+
ADVANCE Progress+5""",
145158
txt);
146159
}
147160

0 commit comments

Comments
 (0)