aboutsummaryrefslogtreecommitdiff
path: root/tests
Commit message (Collapse)AuthorAge
* Add tests to validate backpressure vs best effort for pairv1.Garrett D'Amore2017-08-11
|
* Fail to another stream on default (no pipe requested).Garrett D'Amore2017-08-11
|
* Add a test for default pipe in polyamorous mode.Garrett D'Amore2017-08-11
|
* Fix TTL handling for pair1 protocol; more tests.Garrett D'Amore2017-08-11
|
* Windows fixes; especially idempotent init/fini.Garrett D'Amore2017-08-11
| | | | | | | This fixes one major problem, which was that if nni_fini() was called once on Windows, it would not be further possible to call nni_init(). While here fixed a few compilation issues.
* Test support for pairv1 including polyamorous mode.Garrett D'Amore2017-08-11
|
* Add 32-bit accessors for messages, and tests for them.Garrett D'Amore2017-08-11
|
* Leaking poll fds.Garrett D'Amore2017-08-11
| | | | | | | We never set the fd->sn_init member, causing new fds to be allocated on each request for a new pollfd, and causing old ones to leak, and worse may be even to not get notified. While here, we arrange for a bit richer testing against the various options.
* Verify errno handling works; use table driven approach.Garrett D'Amore2017-08-10
|
* Restore the device test.Garrett D'Amore2017-08-10
|
* Unify the msg API.Garrett D'Amore2017-08-10
| | | | | | | | | | | | | This makes the operations that work on headers start with nni_msg_header or nng_msg_header. It also renames _trunc to _chop (same strlen as _trim), and renames prepend to insert. We add a shorthand for clearing message content, and make better use of the endian safe 32-bit accessors too. This also fixes a bug in inserting large headers into messages. A test suite for message handling is included.
* Add new PAIR_V1 protocol.Garrett D'Amore2017-08-10
| | | | | | | | | | The PAIR_V1 protocol supports both raw and cooked modes, and has loop prevention included. It also has a polyamorous mode, wherein it allows multiple connections to be established. In polyamorous mode (set by an option), the sender requests a paritcular pipe by setting it on the message. We default to PAIR_V1 now.
* fixes #47 compat_reqttls fails sometimesGarrett D'Amore2017-08-09
| | | | fixes #23 Restore the old idhash logic for sockets
* Fix problems found in Windows build.Garrett D'Amore2017-08-09
|
* fixes #48 tcp sometimes fails to get a portGarrett D'Amore2017-08-09
|
* Undo header include reordering (clang, breaks windows).Garrett D'Amore2017-08-09
|
* fixes #44 open protocol by "name" (symbol) instead numberGarrett D'Amore2017-08-09
| | | | | | | | | | | | | | fixes #38 Make protocols "pluggable", or at least optional This is a breaking change, as we've done away with the central registered list of protocols, and instead demand the user call nng_xxx_open() where xxx is a protocol name. (We did keep a table around in the compat framework though.) There is a nice way for protocols to plug in via an nni_proto_open(), where they can use a generic constructor that they use to build a protocol specific constructor (passing their ops vector in.)
* fixes #37 Make transports pluggableGarrett D'Amore2017-08-08
| | | | | | | | | | | | We automatically register inproc, TCP, and IPC. We can add more now by just calling nni_tran_register(). (There is no unregister support.) This requires transports to have access to the AIO framework (so that needs to be something we consider), and a few nni_sock calls to get socket options. Going forward we should version the ops vectors, and move to pushing down transport options from the framework via setopt calls -- there is no reason really that transports need to know all these.
* Use inproc to minimize timeouts on TCP (Windows).Garrett D'Amore2017-08-08
|
* Increase the timeouts for compat_reqttl (context switches?)Garrett D'Amore2017-08-08
| | | | | Also, we need to nn_close(), because the close can reasonably race against nn_term(), causing false test failures.
* Added nn_compat code for option handling, fixed other bugs.Garrett D'Amore2017-08-08
| | | | | | | Hop counts for REQ were busted (bad TTL), and imported the compat_reqtll test. At the same time, added code to nn_term to shut down completely, discarding sockets. (Note that some things, such as globals, may still be left around; that's ok.)
* compatible pipeline test makes bad timing assumptions.Garrett D'Amore2017-08-07
| | | | | | | There are no guarantees about message ordering when multiple sockets are involved. Adding a delay doesn't fix the lack of a guarantee, but makes it sufficiently unlikely to be violated to suit our test purposes.
* Add some more compatibility tests; fix surveyor compat bug.Garrett D'Amore2017-08-07
| | | | | | | | | We noticed a bug in the surveyor handling of the options; this fixes that. At the same time, we noticed a race condition in the setting of the error for future calls, a short sleep seems to cure it. This distinction (ESTATE vs ETIMEDOUT) is pretty annoying, and it would be better to have a different way to handle it. More work here is warranted.
* Fix crash when using legacy send API with NN_MSG.Garrett D'Amore2017-08-07
| | | | | | | | | We introduced the compat_msg.c from the old msg.c in the nanomsg repo. While here, we found that the handling for send() was badly wrong, by a level of indirection. We simplified the code to so that nn_send() and nn_recv() are simple wrappers around the nn_sendmsg() and nn_recvmsg() APIs (as in old nanomsg). This may not be quite as fast, but it's more likely to be correct and reduces complexity.
* Use C90 syntax.Garrett D'Amore2017-08-04
|
* Hopefully improve scalability test results.Garrett D'Amore2017-08-04
| | | | | | | There is still a Windows mystery (and maybe not just Windows) where nng_close() appears to hang unless some output is performed. More testing and analysis is needed here -- but the main message exchanges seem to work fine.
* Refactor AIO logic to close numerous races and reduce complexity.Garrett D'Amore2017-08-04
| | | | | | | | | This passes valgrind 100% clean for both helgrind and deep leak checks. This represents a complete rethink of how the AIOs work, and much simpler synchronization; the provider API is a bit simpler to boot, as a number of failure modes have been simply eliminated. While here a few other minor bugs were squashed.
* Remove unused variables.Garrett D'Amore2017-07-17
|
* Add Capitar's license to the scalability test.Garrett D'Amore2017-07-17
|
* Scalability test fixes.Garrett D'Amore2017-07-17
| | | | | | | | This fixes a potential nasty bug associated with the objhash table resizing, and rewrites the scalability test to use just a single thread handling some 2000 client sockets. This proves that the framework can deal with vast numbers of sockets, regardless of the supported number of operating system threads.
* idhash has it's own lock now.Garrett D'Amore2017-07-13
|
* Make idhash non-inlined (so we can add a mutex.)Garrett D'Amore2017-07-13
|
* Start of progress on Windows. Name resolution and IOCP work begins.Garrett D'Amore2017-07-07
|
* TCP asynchronous working now.Garrett D'Amore2017-07-07
| | | | | | | | | | | | | | | | It turns out that I had to fix a number of subtle asynchronous handling bugs, but now TCP is fully asynchronous. We need to change the high-level dial and listen interfaces to be async as well. Some of the transport APIs have changed here, and I've elected to change what we expose to consumers as endpoints into seperate dialers and listeners. Under the hood they are the same, but it turns out that its helpful to know the intended use of the endpoint at initialization time. Scalability still occasionally hangs on Linux. Investigation pending.
* Fix copyright.Garrett D'Amore2017-07-06
|
* Fixes for async resolver, plus a test suite for it.Garrett D'Amore2017-07-06
|
* Move TCP negotiation out of sync accept/connect.Garrett D'Amore2017-07-05
|
* Move IPC negotiation out of connect/accept.Garrett D'Amore2017-07-05
| | | | | | This prevents a slow partner from blocking new connections from being established on the server. Before this a single partner could cause the server to block waiting to complete the negotiation.
* inproc transport uses aio for connect/accept.Garrett D'Amore2017-07-03
|
* I've seen successful scalability runs take over 5 secs.Garrett D'Amore2017-06-29
|
* Let scalability test startup a bit quicker.Garrett D'Amore2017-06-25
|
* Device can take a little while to set up, and this can result in lost msgs.Garrett D'Amore2017-06-25
|
* Make reqrep test more robust; sock test faster.Garrett D'Amore2017-06-25
|
* Expose a library finalizer suitable for atexit().Garrett D'Amore2017-06-21
|
* Pipe ID race on close (pipe IDs are zero at close).Garrett D'Amore2017-04-14
| | | | | This should address some of the errors we've seen. Additionally, the scalability test was a bit brittle due to too-short timeouts.
* Hopefully close shutdown race in rep.Garrett D'Amore2017-03-29
|
* Fix test suite bugs.Garrett D'Amore2017-03-11
|
* Start of close related race fixes. Scalability test.Garrett D'Amore2017-03-10
|
* Add device support & testing. Bus semantic fix.Garrett D'Amore2017-01-27
| | | | | | | | | | | This adds nn_device and nng_device. There were some internal changes required to fix shutdown / close issues. Note that we shut down the sockets when exiting from device -- this is required to make both threads see the failure and bail, since we are not using a single event loop. I also noticed that the bus protocol had a bug where it would send messages back to the originator. This was specifically tested for in the compat_device test, and we have fixed it.
* Fixes for BUS protocol in compat, test suite, and timing in compat tests.Garrett D'Amore2017-01-26
|