Commit Graph

1949 Commits

Author SHA1 Message Date
Andrew Johnson 7910f7a794 Another include epicsGuard.h missing for 3.15 builds 2021-01-05 11:01:02 -08:00
Andrew Johnson 62cbbd6722 caChannel: Use epicsMutex and epicsGuard<> 2021-01-05 11:01:02 -08:00
Andrew Johnson ece8b94357 include epicsGuard.h for 3.15 builds 2021-01-05 11:01:02 -08:00
Andrew Johnson 6d19349a5d Fixes for testConveyor on RTEMS 2021-01-05 11:01:02 -08:00
Andrew Johnson f3486211f5 Simplify testConveyor 2021-01-05 11:01:02 -08:00
Andrew Johnson bf04c69bda Conveyor: Don't try to support self-deletion 2021-01-05 11:01:02 -08:00
Andrew Johnson e0c2496e52 Add a Notification constructor that also sets client 2021-01-05 11:01:02 -08:00
Andrew Johnson e00ccbeb9c Conveyor: Change run() to follow MAD's skeleton
This is still broken if a client method (notify() or the destructor)
deletes the conveyor, which accesses data members before exiting.
2021-01-05 11:01:02 -08:00
Andrew Johnson a9725834dc Add tests for notifyConveyor 2021-01-05 11:01:02 -08:00
Andrew Johnson a078e03041 Notifyer: Give conveyor threads a unique name 2021-01-05 11:01:02 -08:00
Andrew Johnson 98e81a542e Use epicsMutex and epicsEvent instead of pv::data equivalents 2021-01-05 11:01:02 -08:00
Andrew Johnson 0332d0f2c1 notifierConveyer destruction protection
Remove the work variable
2021-01-05 11:01:02 -08:00
Andrew Johnson 345f2782cd caContext: Restore existing context in constructor
Don't assume other code might be using our context.
Fix destructor to reattach the right context.
2021-01-05 11:01:02 -08:00
Andrew Johnson b0b2228558 Make ca::Attach::context a reference, not a smart pointer 2021-01-05 11:01:02 -08:00
Andrew Johnson bfe35cc1d6 Remove testdbCleanup() call, causes major problems 2021-01-05 11:01:02 -08:00
Andrew Johnson c63c09a834 Oops, permit building with Base-3.15 2021-01-05 11:01:02 -08:00
Andrew Johnson 964a6bc33a Major updates in testCa, run on RTEMS under QEMU 2021-01-05 11:01:02 -08:00
Andrew Johnson 92002b6ba2 Include pvAccess.h before exportSharedSym's in caContext.cpp 2021-01-05 11:01:02 -08:00
Andrew Johnson 33cc9b1fdb Define epicsExportSharedSymbols in ca/notifierConveyor.cpp 2021-01-05 11:01:02 -08:00
Andrew Johnson 23c9b09c1e Re-enable running of testCaProvider on Windows 2021-01-05 11:01:02 -08:00
Andrew Johnson 8b3a057a69 Have notifierConveyor trap and drop any exceptions 2021-01-05 11:01:02 -08:00
Andrew Johnson f9c40e96cf Collect ca_client_context operations
Each instance of the caContext class represents a separate CA context,
so each CAChannelProvider creates one and keeps a shared_ptr to it,
making that available to its channels and channel operations. These
also take their own shared_ptr to it as well so the context cannot be
destroyed while it might be needed.

A related caContext Attach object is intended to be short-lived, and
to be allocated on the stack. When created it saves the current CA
context for the thread, replacing it from the caContext given to its
constructor. CA operations will now use the attached context. When the
Attach destructor runs it detaches the thread from the current context
(checking still has the expected value) and re-attaches the thread to
any context that was saved by the constructor.
2021-01-05 11:01:02 -08:00
Andrew Johnson 25dde0f4ba Make Codacy happier 2021-01-05 11:01:02 -08:00
Andrew Johnson 06c2fb579f Replaced 4 notification threads with 2 notifierConveyors
Channel connection notifications are now handled by connectNotifier,
getDone, putDone and monitor events handled by resultNotifier.
A notifierConveyor is generic, and contains a queue and a thread.
You pass a Notification pointing to a NotifierClient to a Conveyor's
notifyClient() method, and the thread will call the client's
notifyClient() method once it reaches the front of the queue.

The conveyor threads stop when the caProvider is destroyed.
The queue stores weak pointers, so queued notifications won't prevent
client objects from being destroyed.
2021-01-05 11:01:02 -08:00
Andrew Johnson 2729903a10 Make the channelConnectThread per-provider
This passes the tests (on MacOS).
2021-01-05 11:01:02 -08:00
Andrew Johnson 601280836d Move caProvider worker threads shutdown to static destructors 2021-01-05 11:01:02 -08:00
Andrew Johnson 44fda51935 Start of major overhaul
Moved duplicated EXCEPTION_GUARD macro to private header file.
Removed all DEBUG_LEVEL and similar prints.
Some reformatting and code simplification.
2021-01-05 11:01:02 -08:00
Andrew Johnson 05c2b605aa Enhancements to testCaProvider
Loop the tests so we check for destroying the caProvider.
Move the shutdown call inside the try/catch.
2021-01-05 11:01:02 -08:00
Andrew Johnson 9671ee132e caProvider threads: Lock the mutex while reading isStop state 2021-01-05 11:01:02 -08:00
Michael Davidsaver f9cbaf72ff fix ci 2020-12-05 07:41:06 -08:00
Michael Davidsaver ebeaa18486 use ci-core-dumper 2020-12-04 11:51:24 -08:00
Michael Davidsaver 29c0656412 ci: run RTEMS tests 2020-11-22 11:58:33 -08:00
Michael Davidsaver d005260017 hackAroundRTEMSSocketInterrupt 2020-11-22 11:58:33 -08:00
Michael Davidsaver 9423252416 testChannelAccess disable for RTEMS
Doesn't pass. for RTEMS 4.x.  Not clear why.
Disable so that the remaining tests can be run.
2020-11-22 11:57:02 -08:00
Michael Davidsaver e13cee1d5c Disable testCaProvider for <=3.15 and WIN32
Random hangs on WIN32.
Seems to crash with 3.15 (github actions)
2020-11-22 11:53:58 -08:00
Michael Davidsaver 5a72232028 update ci
update ci-scripts
switch travis-ci -> github actions
Enable RTEMS testing
2020-11-22 11:53:58 -08:00
Michael Davidsaver 597f168b9c fixup tests for RTEMS 2020-11-22 11:53:58 -08:00
Michael Davidsaver 01637cfbbe Revert "rtemsTestHarness needs no data files"
This reverts commit cca473ed0e.
2020-11-21 10:32:18 -08:00
Michael Davidsaver fc4e3c5d44 discoverInterfaces() correctly ignore non-IPv4 addresses
Must check sa_family early, before attempting to copy
in case sockaddr needs more storage than sockaddr_in.
2020-11-21 10:32:18 -08:00
Michael Davidsaver 684da91675 testServerContext fix # of tests 2020-11-21 10:32:16 -08:00
Michael Davidsaver 325b138467 Revert "Add support for socket addresses other then IPv4"
This reverts commit 7db4f94b8b.
2020-11-21 10:31:22 -08:00
Michael Davidsaver 862f08a9d3 Revert "Add check for the definition "darwin" to support Mac"
This reverts commit 53cd4fa3ef.
2020-11-21 10:31:22 -08:00
Michael Davidsaver 3b2261a61f Remove unused alignBuffer() and alignData() 2020-11-14 12:01:47 -08:00
Michael Davidsaver cca473ed0e rtemsTestHarness needs no data files 2020-11-11 08:08:15 -08:00
Michael Davidsaver 564f19e466 handle exception in authGblInit()
Don't allow c++ exceptions to propagate to epicsThreadOnce()
2020-11-10 23:03:48 -08:00
Michael Davidsaver d17d44ba0c minor 2020-11-10 23:03:48 -08:00
Heinz Junkes 53cd4fa3ef Add check for the definition "darwin" to support Mac 2020-08-20 12:00:06 +02:00
Heinz Junkes af550178e8 Merge branch 'fixUtils' 2020-08-19 16:38:05 +02:00
Heinz Junkes 7db4f94b8b Add support for socket addresses other then IPv4 2020-08-19 16:07:11 +02:00
Michael Davidsaver c6199d359a travis-ci network fixup 2020-08-12 18:55:26 -07:00