RFR (S) 8167548: [TESTBUG] Logging tests put log files in source tree

Harold Seigel harold.seigel at oracle.com
Tue Feb 19 21:03:03 UTC 2019


Thanks Coleen!

Harold

On 2/19/2019 3:45 PM, coleen.phillimore at oracle.com wrote:
>
> Looks good to me.
> Coleen
>
> On 2/19/19 3:32 PM, Harold Seigel wrote:
>> Hi David,
>>
>> Thanks for looking at this!
>>
>> Please review this new update:
>>
>>    http://cr.openjdk.java.net/~hseigel/bug_8167548.3/webrev/
>>
>> It contains changes to logTestFixture.cpp to use jio_snprintf(), as 
>> you suggested.
>>
>> Test logTestUtils.inline.hpp was also changed (based on your 
>> suggestion) to use the statics tmp_dir and file_sep.
>>
>> Thanks, Harold
>>
>> On 2/19/2019 12:43 AM, David Holmes wrote:
>>> Hi Harold,
>>>
>>> On 16/02/2019 4:39 am, Harold Seigel wrote:
>>>> Hi,
>>>>
>>>> Please review this updated fix for this logging test issue. The fix 
>>>> changes tests to create logging files in the temp directory and 
>>>> includes the pid as part of the logging file names.
>>>>
>>>> Open Webrev: 
>>>> http://cr.openjdk.java.net/~hseigel/bug_8167548.2/webrev/index.html
>>>>
>>>> JBS Bug: https://bugs.openjdk.java.net/browse/JDK-8167548
>>>
>>> It seems extremely complicated for what it is doing ...
>>>
>>>> The fix includes the following changes:
>>>>
>>>>  1. Method cur_log_file_name() was added to the JVM logging support to
>>>>     return the name of current logging file.
>>>
>>> I hate seeing this in product code just to support test code, but 
>>> realize the key problem being solved here is ensuring the test knows 
>>> the correct name for the log file.
>>>
>>>>  2. Support was added to logTestFixture.cpp to prefix the temp dir and
>>>>     pid to the name of logging files that include test specific 
>>>> information.
>>>
>>> Seems very complicated. We create a temporary stack array to write 
>>> most things into; then copy that into a temporary ResourceArray with 
>>> the tmp prefix added, and then copy that into the real destination! 
>>> Can't we simply expand the jio_snprintf with %s%s and pass 
>>> os::get_temp_directory() and os::file_separator() ?
>>>
>>>>  3. Method prepend_temp_dir() was added for use by logging tests to
>>>>     prepend temp dir and pid to logging files with simple names, 
>>>> such as
>>>>     "start-rotate-test".
>>>>
>>>>  4. Method prepend_prefix_temp_dir() was added for use by logging 
>>>> tests
>>>>     to create a malloc allocated string that includes a prefix, 
>>>> such as
>>>>     'file=', the temp dir, and a user specified string.
>>>
>>> You define:
>>>
>>>   91 static const char* tmp_dir = os::get_temp_directory();
>>>   92 static const char* file_sep = os::file_separator();
>>>
>>> but then don't use them where you need them:
>>>
>>>  99   int ret = jio_snprintf(temp_file, temp_file_len, "%s%spid%d.%s",
>>>  100                          os::get_temp_directory(), 
>>> os::file_separator(),
>>>
>>> 110   int ret = jio_snprintf(temp_file, temp_file_len, "%s%s%s%s",
>>>  111                          prefix, os::get_temp_directory(), 
>>> os::file_separator(), filename);
>>>
>>>
>>> I can't say I particularly like the changes but as it's test code I 
>>> really don't care that much. There are bigger fish to fry.
>>>
>>> Thanks,
>>> David
>>> -----
>>>
>>>>  5. Test test_logConfiguration needed to be changed to properly 
>>>> handle a
>>>>     logging file that actually begins with "\"file=..."\".
>>>>
>>>>  6. Other logging tests were changed to call the new methods.
>>>>
>>>> The changes were tested locally to check that the files were 
>>>> properly named and deleted.  Additionally, the tests were run on on 
>>>> Windows, Linux, and Mac.  Also, the fix was regression tested by 
>>>> running Mach5 tiers 1 and 2 tests and builds on Linux-x64, Windows, 
>>>> and Mac OS X, Mach5 tiers 3 -5 on Linux-x64, and by running JCK 
>>>> Lang and VM tests on Linux-x64.
>>>>
>>>> Thanks, Harold
>>>>
>>>>
>>>> On 2/8/2019 10:02 AM, Harold Seigel wrote:
>>>>> Hi David,
>>>>>
>>>>> Thanks for looking at this.
>>>>>
>>>>> The test's logging file name includes the job's start time. But, 
>>>>> the test's call to LogFileOutput::set_file_name_parameters(0) sets 
>>>>> the job's start time to the beginning of time: 
>>>>> 1970-01-01_01-00-00. The logging code then converts this from UTC 
>>>>> to local time and uses the local time in the file name.  And, 
>>>>> since Burlington MA is five hours behind UTC, the resulting time 
>>>>> used in the file name is: 1969-12-31_19-00-00.  So, my 'fix' would 
>>>>> only work when the test was run in a timezone that's five hours 
>>>>> behind UTC.
>>>>>
>>>>> It looks like many of the gtest logging tests create files in the 
>>>>> source directory.  So, I'm withdrawing this change until this 
>>>>> bigger problem can be addressed.
>>>>>
>>>>> Thanks, Harold
>>>>>
>>>>> On 2/7/2019 7:26 PM, David Holmes wrote:
>>>>>> Hi Harold,
>>>>>>
>>>>>> On 8/02/2019 10:08 am, Harold Seigel wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> Please review this fix for JDK-8167548.  The test used the wrong 
>>>>>>> 'predictable' file names so the files were not getting deleted.
>>>>>>
>>>>>> I'm confused. Where does the magic "1969-12-31_19-00-00" date 
>>>>>> string come from?
>>>>>>
>>>>>> Second, this still means the test puts logs into the source tree, 
>>>>>> which is a bad thing. can we not fix this so that the log file is 
>>>>>> in a tmp directory, or a jtreg working directory or ...?
>>>>>>
>>>>>> Thanks,
>>>>>> David
>>>>>>
>>>>>>> Open Webrev: 
>>>>>>> http://cr.openjdk.java.net/~hseigel/bug_8167548/webrev/index.html
>>>>>>>
>>>>>>> JBS Bug: https://bugs.openjdk.java.net/browse/JDK-8167548
>>>>>>>
>>>>>>> The fix was tested by hand on Linux x64 to make sure the files 
>>>>>>> were deleted.  It was also regression tested on Windows, 
>>>>>>> Solaris, and Mac.
>>>>>>>
>>>>>>> Thanks, Harold
>>>>>>>
>


More information about the hotspot-runtime-dev mailing list