EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: EPICS in Docker image Build Error base-3.15.6 (alpine linux)
From: Josh Fiddler via Tech-talk <tech-talk at aps.anl.gov>
To: tech-talk at aps.anl.gov
Date: Thu, 22 Apr 2021 17:46:41 -0400
Ok. I'll dig into that in the morning. Thank you all for your prompt responses. Much appreciated. 
Josh


On Thu, Apr 22, 2021 at 5:44 PM Johnson, Andrew N. <anj at anl.gov> wrote:
Hi Josh,

On Apr 22, 2021, at 4:06 PM, Josh Fiddler via Tech-talk <tech-talk at aps.anl.gov> wrote:
>
> I managed to compile EPICS 7.0.5 within the MDSplus Alapine container and ran `make runtests`. Only two tests Failed
> ###### Begin Error Output ######
> /Test Summary Report
> -------------------
> epicsTimeZoneTest.t         (Wstat: 256 Tests: 160 Failed: 4)
>   Failed tests:  84, 90, 104, 110
>   Non-zero exit status: 1
> epicsThreadTest.t           (Wstat: 256 Tests: 15 Failed: 2)
>   Failed tests:  3, 5
>   Non-zero exit status: 1
> Files=48, Tests=4285, 211 wallclock secs ( 0.49 usr  0.07 sys +  1.42 cusr  0.72 csys =  2.70 CPU)
> Result: FAIL
> ###### End Error Output ######
>
> Are the test cases published?

The code for those two test programs can be found in the modules/libcom/test directory. You can run the compiled test programs by hand, they generate human-readable output in a standard format called TAP (Test Anything Protocol) which is supported by Perl’s test harness. To run them:

> woz$ cd modules/libcom/test/O.linux-x86_64

> woz$ ./epicsTimeZoneTest
> 1..160
> # POSIX 1445259616
> # TZ = "EST5EDT"
> # test_localtime(1445259616, ...)
> ok  1 - epicsTime_localtime() success
> ok  2 - sec 16==16
> ok  3 - min 0==0
> ok  4 - hour 9==9
> ok  5 - mday 19==19
> ok  6 - mon 9==9
> ok  7 - year 2015==2015
> ok  8 - wday 1==1
> ok  9 - yday 291==291
> ok 10 - isdst 1==1
> # test_gmtime(1445259616, ...)
> ...

> # POSIX 1421244931
> # TZ = "EST5EDT"
> # test_localtime(1421244931, ...)
> ok 81 - epicsTime_localtime() success
> ok 82 - sec 31==31
> ok 83 - min 15==15
> ok 84 - hour 9==9
> ok 85 - mday 14==14
> ok 86 - mon 0==0
> ok 87 - year 2015==2015
> ok 88 - wday 3==3
> ok 89 - yday 13==13
> ok 90 - isdst 0==0
> ...

> # TZ = "CST6CDT"
> # test_localtime(1421244931, ...)
> ok 101 - epicsTime_localtime() success
> ok 102 - sec 31==31
> ok 103 - min 15==15
> ok 104 - hour 8==8
> ok 105 - mday 14==14
> ok 106 - mon 0==0
> ok 107 - year 2015==2015
> ok 108 - wday 3==3
> ok 109 - yday 13==13
> ok 110 - isdst 0==0
> ...

> ok 157 - year 2015==2015
> ok 158 - wday 3==3
> ok 159 - yday 13==13
> ok 160 - isdst 0==0
>
>     Results
>     =======
>        Tests: 160
>       Passed: 160 = 100.00%


> woz$ ./epicsThreadTest
> 1..15
> # System has 4 CPUs
> ok  1 - ncpus > 0
> # main() thread 0x7fc39bd001e0
> ok  2 - Join delayed parent (2.00108 seconds)
> ok  3 - Join tests #1 completed
> ok  4 - Join delayed parent (2.00075 seconds)
> ok  5 - Join tests #2 completed
> ok  6 - pget == pset
> ok  7 - thread.getPriority() == epicsThreadGetPriority(self)
> ok  8 - pget == pset
> ok  9 - thread.getPriority() == epicsThreadGetPriority(self)
> ok 10 - pget == pset
> ok 11 - thread.getPriority() == epicsThreadGetPriority(self)
> ok 12 - threadB epicsThreadIsOkToBlock() = 1
> ok 13 - threadA epicsThreadIsOkToBlock() = 0
> ok 14 - infoB.didSomething
> ok 15 - infoA.didSomething
>
>     Results
>     =======
>        Tests: 15
>       Passed:  15 = 100.00%



From the test failures you reported it looks like the musl C library that comes with Alpine Linux may have problems with its DST calculations (tests 84, 90, 104 and 110 in the first program) for the year 2015 at least, and its pthread_join() routine might not be working (tests 3 and 5 in the second program). The first issue you can probably ignore, but the pthread_join() might be more of a problem and is something that you should check since the IOC code does now use it.

- Andrew


--
Complexity comes for free, simplicity you have to work for.


References:
EPICS in Docker image Build Error base-3.15.6 (alpine linux) Josh Fiddler via Tech-talk
Re: EPICS in Docker image Build Error base-3.15.6 (alpine linux) Johnson, Andrew N. via Tech-talk
Re: EPICS in Docker image Build Error base-3.15.6 (alpine linux) Josh Fiddler via Tech-talk
Re: EPICS in Docker image Build Error base-3.15.6 (alpine linux) Johnson, Andrew N. via Tech-talk

Navigate by Date:
Prev: Re: EPICS in Docker image Build Error base-3.15.6 (alpine linux) Johnson, Andrew N. via Tech-talk
Next: pvdata structure not writing to other pvs Pierrick M Hanlet via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
Navigate by Thread:
Prev: Re: EPICS in Docker image Build Error base-3.15.6 (alpine linux) Johnson, Andrew N. via Tech-talk
Next: AreaDetector Defective Pixel Correction Plugin David Vine via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
ANJ, 23 Apr 2021 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·