From 231a8408b2e234f83f47b2e60ce2c9661ae9f38d Mon Sep 17 00:00:00 2001 From: Alexander Matveev Date: Mon, 13 Jul 2020 12:04:58 -0700 Subject: [PATCH] 8248261: Add timestamps to jpackage and jpackage tests verbose output Reviewed-by: herrick, asemenyuk --- .../jpackage/internal/Arguments.java | 4 +-- .../internal/JPackageToolProvider.java | 4 +-- .../jdk/incubator/jpackage/internal/Log.java | 26 +++++++++++++++++++ .../jdk/incubator/jpackage/main/Main.java | 6 ++--- .../helpers/jdk/jpackage/test/TKit.java | 9 +++++++ .../jpackage/linux/LinuxResourceTest.java | 18 ++++++------- 6 files changed, 51 insertions(+), 16 deletions(-) diff --git a/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Arguments.java b/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Arguments.java index 8e9687b1e99..9efcbe8cc8f 100644 --- a/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Arguments.java +++ b/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Arguments.java @@ -542,11 +542,11 @@ public boolean processArguments() { Log.verbose(e); } else { String msg1 = e.getMessage(); - Log.error(msg1); + Log.fatalError(msg1); if (e.getCause() != null && e.getCause() != e) { String msg2 = e.getCause().getMessage(); if (msg2 != null && !msg1.contains(msg2)) { - Log.error(msg2); + Log.fatalError(msg2); } } } diff --git a/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/JPackageToolProvider.java b/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/JPackageToolProvider.java index f4bf68e0584..e4d18a4656f 100644 --- a/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/JPackageToolProvider.java +++ b/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/JPackageToolProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -45,7 +45,7 @@ public synchronized int run( try { return new jdk.incubator.jpackage.main.Main().execute(out, err, args); } catch (RuntimeException re) { - Log.error(re.getMessage()); + Log.fatalError(re.getMessage()); Log.verbose(re); return 1; } diff --git a/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Log.java b/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Log.java index 9b084619620..d69a3edd884 100644 --- a/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Log.java +++ b/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Log.java @@ -26,6 +26,8 @@ package jdk.incubator.jpackage.internal; import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.Date; /** * Log @@ -77,7 +79,16 @@ public void info(String msg) { } } + public void fatalError(String msg) { + if (err != null) { + err.println(msg); + } else { + System.err.println(msg); + } + } + public void error(String msg) { + msg = addTimestamp(msg); if (err != null) { err.println(msg); } else { @@ -87,19 +98,28 @@ public void error(String msg) { public void verbose(Throwable t) { if (out != null && verbose) { + out.print(addTimestamp("")); t.printStackTrace(out); } else if (verbose) { + System.out.print(addTimestamp("")); t.printStackTrace(System.out); } } public void verbose(String msg) { + msg = addTimestamp(msg); if (out != null && verbose) { out.println(msg); } else if (verbose) { System.out.println(msg); } } + + private String addTimestamp(String msg) { + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS"); + Date time = new Date(System.currentTimeMillis()); + return String.format("[%s] %s", sdf.format(time), msg); + } } private static Logger delegate = null; @@ -120,6 +140,12 @@ public static void info(String msg) { } } + public static void fatalError(String msg) { + if (delegate != null) { + delegate.fatalError(msg); + } + } + public static void error(String msg) { if (delegate != null) { delegate.error(msg); diff --git a/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/main/Main.java b/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/main/Main.java index 7c80237aaca..7cf25e872c6 100644 --- a/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/main/Main.java +++ b/src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/main/Main.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -76,11 +76,11 @@ private int execute(String... args) { try { newArgs = CommandLine.parse(args); } catch (FileNotFoundException fnfe) { - Log.error(MessageFormat.format(I18N.getString( + Log.fatalError(MessageFormat.format(I18N.getString( "ERR_CannotParseOptions"), fnfe.getMessage())); return 1; } catch (IOException ioe) { - Log.error(ioe.getMessage()); + Log.fatalError(ioe.getMessage()); return 1; } diff --git a/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java b/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java index 1e6aa1f8f3b..98bf327785e 100644 --- a/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java +++ b/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java @@ -39,10 +39,12 @@ import java.nio.file.WatchEvent; import java.nio.file.WatchKey; import java.nio.file.WatchService; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -217,7 +219,14 @@ public static boolean isUbuntu() { return false; } + private static String addTimestamp(String msg) { + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS"); + Date time = new Date(System.currentTimeMillis()); + return String.format("[%s] %s", sdf.format(time), msg); + } + static void log(String v) { + v = addTimestamp(v); System.out.println(v); if (extraLogStream != null) { extraLogStream.println(v); diff --git a/test/jdk/tools/jpackage/linux/LinuxResourceTest.java b/test/jdk/tools/jpackage/linux/LinuxResourceTest.java index 423b31d7e0a..72895d9318f 100644 --- a/test/jdk/tools/jpackage/linux/LinuxResourceTest.java +++ b/test/jdk/tools/jpackage/linux/LinuxResourceTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2020 Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -73,21 +73,21 @@ public static void testHardcodedProperties() throws IOException { }) .addBundleVerifier((cmd, result) -> { TKit.assertTextStream("Using custom package resource [DEB control file]") - .predicate(String::startsWith) + .predicate(String::contains) .apply(result.getOutput().stream()); TKit.assertTextStream(String.format( "Expected value of \"Package\" property is [%s]. Actual value in output package is [dont-install-me]", LinuxHelper.getPackageName(cmd))) - .predicate(String::startsWith) + .predicate(String::contains) .apply(result.getOutput().stream()); TKit.assertTextStream( "Expected value of \"Version\" property is [1.0-1]. Actual value in output package is [1.2.3-R2]") - .predicate(String::startsWith) + .predicate(String::contains) .apply(result.getOutput().stream()); TKit.assertTextStream(String.format( "Expected value of \"Architecture\" property is [%s]. Actual value in output package is [bar]", LinuxHelper.getDefaultPackageArch(cmd.packageType()))) - .predicate(String::startsWith) + .predicate(String::contains) .apply(result.getOutput().stream()); }) .forTypes(PackageType.LINUX_RPM) @@ -116,20 +116,20 @@ public static void testHardcodedProperties() throws IOException { }) .addBundleVerifier((cmd, result) -> { TKit.assertTextStream("Using custom package resource [RPM spec file]") - .predicate(String::startsWith) + .predicate(String::contains) .apply(result.getOutput().stream()); TKit.assertTextStream(String.format( "Expected value of \"Name\" property is [%s]. Actual value in output package is [dont-install-me]", LinuxHelper.getPackageName(cmd))) - .predicate(String::startsWith) + .predicate(String::contains) .apply(result.getOutput().stream()); TKit.assertTextStream( "Expected value of \"Version\" property is [1.0]. Actual value in output package is [1.2.3]") - .predicate(String::startsWith) + .predicate(String::contains) .apply(result.getOutput().stream()); TKit.assertTextStream( "Expected value of \"Release\" property is [1]. Actual value in output package is [R2]") - .predicate(String::startsWith) + .predicate(String::contains) .apply(result.getOutput().stream()); }) .run();