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: Unit testing IOCs and databases
From: Torsten Bögershausen via Tech-talk <tech-talk at aps.anl.gov>
To: Stainer Tom <Tom.Stainer at sckcen.be>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Tue, 7 Sep 2021 11:07:19 +0000
Hej Tom,
some answers inline

From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Stainer Tom via Tech-talk <tech-talk at aps.anl.gov>
Reply-To: Stainer Tom <Tom.Stainer at sckcen.be>
Date: Tuesday, 7 September 2021 at 11:13
To: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Subject: Unit testing IOCs and databases

Hello EPICS community,
 
I have a question, that is quite broad in its nature (I know these don’t go down well here but thought I’d try anyway), regarding testing in EPICS.
 
Specifically I am interested in how people using EPICS generally test their applications and the logic in IOCs, at a unit testing level. 
I am not talking about testing epics-base, of course I trust that your tests provide good coverage ☺. What I am interested in is how can I test logic that is in an IOC (db file or via smart database).
 
Essentially this boils down to 4 main questions:
 
- Given a db file what is the standard way to test logic and records inside it in an automated fashion?
Not what I am aware of - the "standard way". Each record has it's own specific behaviour....

- Using the V4 smart database, what is the standard way to mock the protocol i.e. PVA, to do more unit testing rather than integration testing? 
- How do people mock hardware? Is this done by using the asynPortDriver interface?
I am doing tests using both simulated and real hardware: Motion controllers and motors.
Some tests need the simulator to simulate failures in HW...
In any sense, there is a common motor driver, a model 3 driver.
The simulator does the same things as the real HW, so we use the same driver in both cases. 

- Has anyone tried using other libraries, such as google test, Catch2, doctest,… to do unit testing in EPICS? If so, how can I set this up with the EPICS build system?
I am using pytest. 
And the whole test-suite is rather a integration test, not a Unit test.
If you, or anybody else, is interested, I can explain & show stuff in a video meeting.

Kind regards,
Tom




Replies:
RE: Unit testing IOCs and databases Stainer Tom via Tech-talk
References:
Unit testing IOCs and databases Stainer Tom via Tech-talk

Navigate by Date:
Prev: Re: Unit testing IOCs and databases Ralph Lange via Tech-talk
Next: RE: Unit testing IOCs and databases Stainer Tom 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: Unit testing IOCs and databases Johnson, Andrew N. via Tech-talk
Next: RE: Unit testing IOCs and databases Stainer Tom 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, 07 Sep 2021 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·