Skip to content

Commit 4f580c4

Browse files
committed
Merge branch 'alex-removeJRI'
2 parents d14090c + 5289d2a commit 4f580c4

File tree

8 files changed

+89
-47
lines changed

8 files changed

+89
-47
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<configuration>
2+
3+
<!-- Define LOG_PATH using DATA_PATH with fallback to current dir -->
4+
<property name="LOG_PATH" value="${LOG_PATH:-./r5r-log.log}" />
5+
6+
<appender name="RFILE" class="ch.qos.logback.core.FileAppender">
7+
<file>${LOG_PATH}</file>
8+
<encoder>
9+
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
10+
</encoder>
11+
<append>false</append>
12+
</appender>
13+
14+
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
15+
<encoder>
16+
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
17+
</encoder>
18+
</appender>
19+
20+
<root level="ALL">
21+
<appender-ref ref="CONSOLE"/>
22+
<appender-ref ref="RFILE"/>
23+
</root>
24+
25+
</configuration>

java-r5rcore/src/org/ipea/r5r/Process/R5Process.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import org.ipea.r5r.RDataFrame;
1313
import org.ipea.r5r.RoutingProperties;
1414
import org.ipea.r5r.Utils.Utils;
15+
import org.slf4j.Logger;
16+
import org.slf4j.LoggerFactory;
1517

1618
import java.io.*;
1719
import java.text.ParseException;
@@ -61,6 +63,8 @@ public abstract class R5Process {
6163

6264
protected abstract boolean isOneToOne();
6365

66+
private static final Logger LOG = LoggerFactory.getLogger("org.ipea.r5r.Process.R5RProcess");
67+
6468
public R5Process(ForkJoinPool threadPool, TransportNetwork transportNetwork, RoutingProperties routingProperties) {
6569
this.r5rThreadPool = threadPool;
6670
this.transportNetwork = transportNetwork;
@@ -80,9 +84,7 @@ public RDataFrame run() throws ExecutionException, InterruptedException {
8084
filter(Objects::nonNull).
8185
collect(Collectors.toList())).get();
8286

83-
if (!Utils.verbose & Utils.progress) {
84-
System.out.print(".. DONE!\n");
85-
}
87+
LOG.info(".. DONE!\n");
8688

8789
RDataFrame results = mergeResults(processResults);
8890

@@ -197,9 +199,8 @@ private RDataFrame tryRunProcess(AtomicInteger totalProcessed, int index) {
197199
results.clear();
198200
}
199201

200-
if (!Utils.verbose & Utils.progress) {
201-
System.out.print("\r" + totalProcessed.getAndIncrement() + " out of " + nOrigins + " origins processed.");
202-
}
202+
LOG.info("\r{} out of {} origins processed.", totalProcessed.getAndIncrement(), nOrigins);
203+
203204
} catch (ParseException | FileNotFoundException e) {
204205
e.printStackTrace();
205206
}
@@ -224,9 +225,7 @@ private String getCsvFilename(int index) {
224225
protected abstract RDataFrame runProcess(int index) throws ParseException;
225226

226227
private RDataFrame mergeResults(List<RDataFrame> processResults) {
227-
if (!Utils.verbose & Utils.progress) {
228-
System.out.print("Consolidating results...");
229-
}
228+
LOG.info("Consolidating results...");
230229

231230
int nRows;
232231
nRows = processResults.stream()
@@ -252,9 +251,7 @@ private RDataFrame mergeResults(List<RDataFrame> processResults) {
252251
);
253252
mergedDataFrame.updateRowCount();
254253

255-
if (!Utils.verbose & Utils.progress) {
256-
System.out.print(" DONE!\n");
257-
}
254+
LOG.info(" DONE!\n");
258255

259256
return mergedDataFrame;
260257
}

java-r5rcore/src/org/ipea/r5r/R5RCore.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,8 @@
1515
import org.ipea.r5r.Network.NetworkBuilder;
1616
import org.ipea.r5r.Process.*;
1717
import org.ipea.r5r.Utils.Utils;
18-
import org.rosuda.JRI.RConsoleOutputStream;
19-
import org.rosuda.JRI.Rengine;
2018
import org.slf4j.LoggerFactory;
2119

22-
import java.io.PrintStream;
2320
import java.nio.file.Path;
2421
import java.nio.file.Paths;
2522
import java.text.ParseException;
@@ -190,7 +187,7 @@ public void verboseMode() {
190187
}
191188

192189
public void setProgress(boolean progress) {
193-
Utils.progress = progress;
190+
Utils.setlogProgress(progress);
194191
}
195192

196193
public void setBenchmark(boolean benchmark) {
@@ -211,6 +208,8 @@ public String getOutputCsvFolder () {
211208
return Utils.outputCsvFolder;
212209
}
213210

211+
public String getLogPath() { return System.getProperty("LOG_PATH"); }
212+
214213
public void setDetailedItinerariesV2(boolean v2) {
215214
Utils.detailedItinerariesV2 = v2;
216215
}
@@ -220,10 +219,6 @@ public void setDetailedItinerariesV2(boolean v2) {
220219
private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(R5RCore.class);
221220

222221
public R5RCore(String dataFolder, boolean verbose, String nativeElevationFunction) throws Exception {
223-
Rengine r = new Rengine();
224-
RConsoleOutputStream rs = new RConsoleOutputStream(r, 1);
225-
System.setOut(new PrintStream(rs));
226-
227222
if (verbose) {
228223
verboseMode();
229224
} else {
@@ -681,11 +676,6 @@ public boolean hasFrequencies() {
681676
return this.transportNetwork.transitLayer.hasFrequencies;
682677
}
683678

684-
public void message(String m) {
685-
Rengine r = new Rengine();
686-
r.eval("message(\"" + m + "\")");
687-
}
688-
689679
public void abort() {
690680
LOG.error("process aborted");
691681
}

java-r5rcore/src/org/ipea/r5r/Utils/Utils.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,22 @@ public static String getTimeFromSeconds(int secondsFromMidnight) {
7272
return (strHours + ":" + strMin + ":" + strSec);
7373
}
7474

75+
public static void setlogProgress(boolean progress){
76+
Utils.progress = progress;
77+
78+
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
79+
Logger logger;
80+
logger = loggerContext.getLogger("org.ipea.r5r.Process.R5RProcess");
81+
82+
if (Utils.verbose) {
83+
logger.setLevel(Level.ALL);
84+
} else if (progress) {
85+
logger.setLevel(Level.INFO);
86+
} else {
87+
logger.setLevel(Level.ERROR);
88+
}
89+
}
90+
7591
public static void setLogMode(String mode, boolean verbose) {
7692
Utils.verbose = verbose;
7793

r-package/R/setup_r5.R

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,13 @@ setup_r5 <- function(data_path,
6969
stop("The 'elevation' parameter only accepts one of the following: c('TOBLER', 'MINETTI','NONE')")
7070
}
7171

72+
# expand data_path to full path, as required by rJava api call
73+
data_path <- path.expand(data_path)
7274

7375
# check Java version installed locally ---------------------------------------
74-
75-
rJava::.jinit()
76+
log_filename <- paste0("r5rlog_", format(Sys.time(), "%Y%m%d"), ".log")
77+
log_path <- file.path(data_path, log_filename)
78+
rJava::.jinit(parameters = paste0("-DLOG_PATH=", log_path))
7679
ver <- rJava::.jcall("java.lang.System", "S", "getProperty", "java.version")
7780
ver <- as.numeric(gsub("\\..*", "", ver))
7881
if (ver != 21) {
@@ -85,9 +88,6 @@ setup_r5 <- function(data_path,
8588
)
8689
}
8790

88-
# expand data_path to full path, as required by rJava api call
89-
data_path <- path.expand(data_path)
90-
9191
# check if data_path has osm.pbf, .tif gtfs data, or a network.dat file
9292
any_network <- length(grep("network.dat", list.files(data_path))) > 0
9393
any_pbf <- length(grep(".pbf", list.files(data_path))) > 0

r-package/inst/jar/r5r.jar

168 Bytes
Binary file not shown.

r-package/tests/testthat/test-set_progress.R

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,23 @@ test_that("progress argument works in routing functions", {
4444

4545
progress_regex <- "\\d+ out of \\d+ origins processed\\."
4646

47-
progress_messages <- capture.output(
48-
res <- eval(parse(text = progress_expr)),
49-
type = "message"
50-
)
47+
48+
log_file <- file.path(r5r_core$getLogPath())
49+
# Clean log before test
50+
if (file.exists(log_file)) writeLines("", log_file)
51+
52+
res <- eval(parse(text = progress_expr))
53+
# Wait a bit to ensure Java flushed the logs
54+
Sys.sleep(0.2)
55+
progress_messages <- readLines(log_file)
5156
expect_true(any(grepl(progress_regex, progress_messages)))
5257

53-
non_progress_messages <- capture.output(
54-
res <- eval(parse(text = non_progress_expr)),
55-
type = "message"
56-
)
58+
# reset log again
59+
writeLines("", log_file)
60+
res <- eval(parse(text = non_progress_expr))
61+
# Wait a bit to ensure Java flushed the logs
62+
Sys.sleep(0.2)
63+
non_progress_messages <- readLines(log_file)
5764
expect_false(any(grepl(progress_regex, non_progress_messages)))
5865
}
5966

r-package/tests/testthat/test-set_verbose.R

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,24 @@ test_that("verbose argument works in routing functions", {
4444

4545
info_regex <- "(\\[.*\\] INFO)|(\\[.*\\] DEBUG)|(\\[.*\\] WARN)"
4646

47-
verbose_messages <- capture.output(
48-
res <- eval(parse(text = verbose_expr)),
49-
type = "message"
50-
)
51-
expect_true(any(grepl(info_regex, verbose_messages)))
47+
log_file <- file.path(r5r_core$getLogPath())
48+
# Clean log before test
49+
if (file.exists(log_file)) writeLines("", log_file)
5250

53-
non_verbose_messages <- capture.output(
54-
res <- eval(parse(text = non_verbose_expr)),
55-
type = "message"
56-
)
51+
res <- eval(parse(text = non_verbose_expr))
52+
# Wait a bit to ensure Java flushed the logs
53+
Sys.sleep(0.2)
54+
non_verbose_messages <- readLines(log_file)
5755
expect_false(any(grepl(info_regex, non_verbose_messages)))
56+
57+
# reset log again
58+
writeLines("", log_file)
59+
res <- eval(parse(text = verbose_expr))
60+
# Wait a bit to ensure Java flushed the logs
61+
Sys.sleep(0.2)
62+
verbose_messages <- readLines(log_file)
63+
64+
expect_true(any(grepl(info_regex, verbose_messages)))
5865
}
5966

6067
assert_function(travel_time_matrix)

0 commit comments

Comments
 (0)