Commit Graph

239 Commits

Author SHA1 Message Date
Alex Bramley fd6fc1269b SimpleClient shouldn't need to return an error. 2013-02-18 01:42:44 +00:00
Alex Bramley 8ed96e4294 Add Me() function for ease of use. 2013-02-18 01:38:04 +00:00
Alex Bramley 12bcc94eeb Add mutex for connect/disconnect locking. 2013-02-18 01:36:52 +00:00
Alex Bramley a323372a0b First steps towards client interface.
- Move all exported vars to Config struct;
- Plumbing for Config.Me etc;
- Constants and INIT/REGISTER handler from github.com/iopred;
2013-02-18 01:36:17 +00:00
Alex Bramley 39882dafd4 Minor rearrangements. 2013-02-17 23:55:39 +00:00
Alex Bramley b1242aa351 Break out tweakable things into a Config struct. 2013-02-16 18:05:56 +00:00
Alex Bramley 45d7b3317f Remove state.StateTracker stutter, hide it in Conn. 2013-02-16 11:29:56 +00:00
Alex Bramley f27e56c8b0 Run gofmt, since it's clearly been a while. 2013-02-16 10:33:15 +00:00
Alex Bramley a674267128 Re-work Handlers for IRC events; add Commands. 2013-02-16 00:17:31 +00:00
Alex Bramley a038856094 Remove embedded logger from client package. 2013-02-16 00:15:23 +00:00
Alex Bramley b39e4717af Allow renicking to be customised. (Closes #14) 2013-01-06 21:01:55 +00:00
Alex Bramley aa021c7cac Fix due to logging api change change. 2012-09-25 23:42:37 +01:00
Alex Bramley 13855ff77b Fix due to logging api change. 2012-09-25 22:39:02 +01:00
Alex Bramley c85f891c6b Bah, dsymonds moved gomock again. 2012-06-26 11:20:57 +01:00
Alex Bramley b98fabe44e Fix go1 time changes up. 2012-06-06 17:12:07 +01:00
Alex Bramley 9c67c42fa1 Merge branch 'release'
Conflicts:
	client/connection.go
	client/connection_test.go
2012-06-06 16:25:07 +01:00
Alex Bramley dbdc470c5c Fix os.EINVAL -> os.ErrInvalid change. 2012-05-14 22:51:01 +01:00
Alex Bramley cb5001bb27 Rate limit testing was not testing properly. Needed abs() and some fixes for time changes. 2012-02-04 23:34:09 +00:00
Alex Bramley a78aed7e7c Functions are not comparable any more, so only compare event names. 2012-02-04 23:32:39 +00:00
Alex Bramley 6fd04236fb "Fix" testing of ratelimiting code. 2012-02-04 01:32:48 +00:00
Alex Bramley eb87e56f96 Mock net.Conn needs updating for interface changes. 2012-02-04 01:16:19 +00:00
Alex Bramley 1c62354cb8 Rewrite flood limiting for new time behaviour. 2012-02-04 01:13:07 +00:00
Alex Bramley dfb6f94b56 Manually managing deadlines is going to *suck*. 2012-02-04 01:12:41 +00:00
Alex Bramley b23215d09b Gofix run. 2012-02-04 00:51:06 +00:00
Alex Bramley be271308c9 Correct import path, again. 2012-02-03 23:48:20 +00:00
Alex Bramley fce8723af0 Basic copy test, to verify expected behaviour. 2011-12-06 00:21:57 +00:00
Alex Bramley f1d0dbe45a If client-side ping can be disabled, we need to ensure something absorbs the shutdown message. 2011-11-15 22:57:29 +00:00
Alex Bramley 3183c9f177 Allow client-side ping to be disabled by setting PingFreq to zero. 2011-11-15 22:22:40 +00:00
Alex Bramley 8fa5e5624e Fix issues/9 by implementing a client-side ping loop. 2011-11-15 22:17:29 +00:00
Alex Bramley e0a5a57fe1 Merge branch 'master' into weekly
Conflicts:
	client/connection.go  # MERGED
	event/registry.go     # DELETED
	logging/mock_test.go  # DELETED
2011-11-13 14:13:55 +00:00
Alex Bramley 907560b599 Migrate to split event pkg. 2011-11-13 14:07:19 +00:00
Alex Bramley 4e4c4b6798 Migrate to split logging pkg. 2011-11-13 14:02:12 +00:00
Alex Bramley 9d5159a220 gofix weekly fixes for client. 2011-11-13 13:34:32 +00:00
Alex Bramley f62470c091 Test rateLimit(). Move call to time.After to write() for ease of testing.
Complete test coverage! Well, for things that matter. I think.
2011-11-11 11:17:18 +00:00
Alex Bramley dbc9c5f09d Misc minor fixen. 2011-11-11 10:49:33 +00:00
Alex Bramley 6a54622df9 Make mockNetConn more likely to expose racy conditions.
Use buffered channels so that Close() returns without waiting.
Use an array of three channels rather than appending to a slice.
2011-11-11 10:48:58 +00:00
Alex Bramley dc524420b0 Test write(). Fix bug where return of Flush() was not checked. 2011-11-11 10:17:17 +00:00
Alex Bramley 19ea7138e5 Test runLoop(). Needed a lot of sleeps... 2011-11-11 09:23:12 +00:00
Alex Bramley 9ccb0a39ab Test recv(). 2011-11-11 08:35:23 +00:00
Alex Bramley 0d4e83ea7f Fix length bug in mockNetChan.
Using the length of the provided buffer is dangerous after the first buffered
read from it, as it'll be the length of the buffer size...
2011-11-11 08:34:55 +00:00
Alex Bramley 38cd23891a Streamline timers in mockNetConn slightly. 2011-11-11 08:00:18 +00:00
Alex Bramley bfdd895ca6 Test send(). 2011-11-11 07:59:16 +00:00
Alex Bramley d4aceddcd7 Test Client creation and ST enable/disable. 2011-11-10 15:06:44 +00:00
Alex Bramley a271cc06f3 Use mock dispatcher for testing event triggering. 2011-11-07 14:53:07 +00:00
Alex Bramley 3feaa7f302 Use a static map of event handlers for internal handlers too. 2011-11-07 13:44:03 +00:00
Alex Bramley aa75e0e0c6 Make enabling/disabling state-tracking easier. Improve constructors. 2011-11-07 13:34:13 +00:00
Alex Bramley 4853024928 Nuke extraneous makefiles, no longer needed. 2011-11-06 06:26:59 +00:00
Alex Bramley caa9429a74 Update README. 2011-11-06 05:22:02 +00:00
Alex Bramley 2bc8238f8e Move state-related handlers to their own file for clarity. 2011-11-06 05:11:49 +00:00
Alex Bramley 85097043cf Epic final commit for nick/chan/logging/testing refactor.
* Brings logging changes to client library.
* Brings state tracker to client library.
* Rewrites all tests to use mock logger and mock state tracker.
* Makes state tracking optional, finally.
* Shaves yaks until they are almost completely bald.
2011-11-06 04:56:46 +00:00
Alex Bramley f128ce84b4 Start of breaking out state tracking into separate package. 2011-10-08 10:42:15 +01:00
Alex Bramley a0020f4e62 Method to initialise tracker memory. 2011-10-08 10:40:58 +01:00
Alex Bramley d072abbb76 Give nicks an awareness of me. 2011-10-07 00:19:31 +01:00
Alex Bramley 7a17ee9eb5 State tracking refactor completer. 2011-10-06 23:54:34 +01:00
Alex Bramley e36caa3a3d Merge branch 'logging' into nickchan-refactor
Conflicts:
	client/nickchan.go

Fix up some inconsistencies in the beginning of the nickchan refactor too.
2011-10-06 22:33:06 +01:00
Alex Bramley 3e1b2c0f81 Turns out gofmt isn't big on spaces sometimes. 2011-09-29 22:58:04 +01:00
Alex Bramley de66051d07 Convert conn.Err into logging.
Also, remove all error-side-effect testing cos it was a bit shit.
First step on the long road to refactoring the nick/chan state tracking
and making everything more testable and mockable with interfaces.
2011-09-29 22:54:54 +01:00
Alex Bramley eb6ac4ce05 Tracking wip. 2011-09-28 20:48:58 +01:00
Alex Bramley c400a2141a Run gofmt over code, it's been a while. 2011-09-12 23:25:09 +01:00
Alex Bramley 18c20080e8 Test handler for 671 replies. 2011-09-12 23:21:40 +01:00
Alex Bramley b0e0be0fe3 Check all nicks against current channel contents for 353 handler. 2011-09-12 23:21:15 +01:00
Alex Bramley 6c1d345f0b Test handler for 353 replies. 2011-09-12 23:14:08 +01:00
Alex Bramley 9d896f2693 Test for 352 RPL_WHOREPLY. 2011-09-11 11:01:28 +01:00
Alex Bramley d4ae3b588d Test for 332 RPL_TOPIC. 2011-09-09 23:27:45 +01:00
Alex Bramley 4008b84db6 Test handler for 324 RPL_CHANNELMODEIS. 2011-09-09 23:24:08 +01:00
Alex Bramley 47ae014c1c Whitespace fix. 2011-09-09 23:04:27 +01:00
Alex Bramley 8ae5fe3b75 Another minor indexing bug :-/ 2011-09-09 23:04:12 +01:00
Alex Bramley ff855691cf Test the 311 RPL_WHOISUSER handler. 2011-09-09 23:03:44 +01:00
Alex Bramley daadb2c96e Test the TOPIC handler. 2011-09-09 23:02:33 +01:00
Alex Bramley d15d1074f5 Fix bug found by MODE handler test. 2011-09-09 22:33:08 +01:00
Alex Bramley c5146e93f6 Add MODE handler test. These are starting to feel clunky. 2011-09-09 22:32:55 +01:00
Alex Bramley df893eb6d0 QUIT handler test. 2011-08-31 22:55:56 +01:00
Alex Bramley b306650af5 Tests for the KICK handler. 2011-08-30 23:15:54 +01:00
Alex Bramley 788c69aaa8 Fix same logic bug in KICK handler. 2011-08-30 23:08:10 +01:00
Alex Bramley d74fd18d3d Fixed logic bug, but it's a bit ugly :-/ 2011-08-24 14:39:27 +01:00
Alex Bramley 4c0f62666d Test for h_PART -- exposed a logic bug :-/ 2011-08-24 14:34:11 +01:00
Alex Bramley 52e74b3f1a Rewrite JOIN handler test to avoid re-testing all the state tracking logic repeatedly. 2011-08-24 13:58:00 +01:00
Alex Bramley c5e13b8b12 Make NICK handler test a little more accurate. 2011-08-24 13:58:00 +01:00
Alex Bramley cf8ab830f7 Move some basic assertions about initial state into setUp(). 2011-08-24 13:58:00 +01:00
Alex Bramley 389f5247f5 Helpers for testing whether Conn errors are triggered. 2011-08-24 13:58:00 +01:00
Alex Bramley 6815c19bb3 Start of JOIN test. Seems like the wrong approach. 2011-08-24 12:46:21 +01:00
Alex Bramley b8c3f42252 Better line ending handling in MockNetConn. 2011-08-24 12:45:32 +01:00
Alex Bramley 83da879ad3 Add tearDown() to all tests. 2011-08-23 11:06:06 +01:00
Alex Bramley 8fc23d5c17 Test CTCP handler. 2011-08-23 11:03:59 +01:00
Alex Bramley 7d9b8c3099 Add tests for explicit and implicit (via EOF) shutdown; fix bug ;-) 2011-08-23 10:53:52 +01:00
Alex Bramley 770c5eb5ac Use ExpectNothing() to make sure handlers don't generate unexpected output. 2011-08-23 10:52:16 +01:00
Alex Bramley 5ff77fc2f9 Add mock dispatcher factory that tests an event fired; use it in Test001(). 2011-08-23 10:50:43 +01:00
Alex Bramley 59b18b038b MockNetConn: Add ExpectNothing() helper. 2011-08-23 10:44:14 +01:00
Alex Bramley bd388db1cc MockNetConn: Use correct os.Errors in Read/Write. 2011-08-23 10:43:48 +01:00
Alex Bramley 020730aca1 MockNetConn: Wrap all channel reads in selects; send EOF on Close(); kill goroutines correctly. 2011-08-23 10:42:54 +01:00
Alex Bramley b04196327a Begin testing event handlers. 2011-08-22 23:24:05 +01:00
Alex Bramley 4e7f272b3f Mock dispatcher for testing. 2011-08-22 23:23:29 +01:00
Alex Bramley 0d7d875b9f Add Send method for mockNetConn, and make Read/Write return errors when closed. 2011-08-22 23:22:46 +01:00
Alex Bramley 48ad9bfa4a Line parsing needs to handle CTCPREPLY too. 2011-08-22 23:21:30 +01:00
Alex Bramley f3a2cf6fa6 Make connected externally accessible, per issues/8. 2011-08-22 17:09:48 +01:00
Alex Bramley fb91caeccf Fix comment for Conn struct. 2011-08-21 13:57:47 +01:00
Alex Bramley 820f0cb14b Test all client commands. 2011-08-21 13:38:51 +01:00
Alex Bramley 425557e8bd Create a simple mock that implements net.Conn. 2011-08-21 13:38:12 +01:00
Alex Bramley 045679dd42 Split Connect() into two pieces for testing purposes. 2011-08-21 13:31:18 +01:00
Alex Bramley a95da1cb2c Enforce upper-case CTCP commands. 2011-08-21 13:22:26 +01:00
Alex Bramley b32e8d050f Gofix for r59. 2011-08-03 08:04:01 +01:00
Alex Bramley cd53356ca6 Merge branch 'master' into release 2011-08-03 08:03:20 +01:00
Alex Bramley 1a4ce96e00 Gofix for r59. 2011-08-03 08:03:08 +01:00
Alex Bramley 2efe298c75 Make IRCHandler the function type, make NewHandler the factory. 2011-07-30 19:42:10 +01:00
Alex Bramley 43a2bf08f1 Make IRCHandler the function type, make NewHandler the factory. 2011-07-30 19:41:50 +01:00
Alex Bramley 1d82af0080 Impolite to break the 'IRC event provides Conn, Line' contract. 2011-07-30 19:35:08 +01:00
Alex Bramley 9c94b0b3e0 Impolite to break the 'IRC event provides Conn, Line' contract. 2011-07-30 19:34:55 +01:00
Alex Bramley 1849d886d4 Revert "Merge branch 'master' into release"
This reverts commit 2528d13314, reversing
changes made to f0a9246c7a.
2011-07-29 23:14:21 +01:00
Alex Bramley 2f31ca5dcf Oh, god damnit. Should at least *try* to build things to make sure they work. 2011-07-28 18:02:02 +01:00
Alex Bramley 364c6da7ae Add a function to make a copy of a *Line (bar the Time field). 2011-07-28 17:56:14 +01:00
Alex Bramley 47d4587ca3 Revert "Weekly commits shouldn't be on release branch"
This reverts commit 934ee04fcf.
2011-07-28 12:14:51 +01:00
Alex Bramley 8fed417dce Oh wait event isn't local. 2011-07-28 00:41:47 +01:00
Alex Bramley 303d3724e2 Break out unboxing code; pass conn/line objects for other events. 2011-07-28 00:24:07 +01:00
Alex Bramley 8e6de2f3c7 Add an overridable Dispatcher to Conn, and use that to dispatch events. 2011-07-27 21:40:56 +01:00
Alex Bramley 900afb5c48 Put nil checking in correct place. 2011-07-27 21:15:09 +01:00
Alex Bramley 33a5bff35b Move line parsing done in dispatchEvent into ParseLine(). 2011-07-27 21:10:37 +01:00
Alex Bramley 5e814babc7 Move to using the new event registry internally. 2011-07-27 21:10:01 +01:00
Alex Bramley 934ee04fcf Weekly commits shouldn't be on release branch 2011-07-26 20:25:14 +01:00
Alex Bramley d2cfe6eb6f Tidy up old-style slice syntax, and use string methods for CTCP parsing. 2011-07-25 23:02:57 +01:00
Alex Bramley 65ae4394fc Update for weekly of 2011-07-16; changes to string.Split(). 2011-07-25 22:27:52 +01:00
Alex Bramley ddd913547c Add field in Conn to allow external state to be propagated to event handlers. 2011-07-25 22:27:09 +01:00
Alex Bramley c3715be829 Use second constant in SetTimeout(). 2011-07-22 01:20:25 +01:00
Alex Bramley 07d5c0676e Fix compile error when NewNick() is called before initialise(). 2011-07-22 01:20:07 +01:00
Alex Bramley 6634869fe6 Use connected bool properly to ensure shutdown() can't be called twice. 2011-07-22 01:17:35 +01:00
Alex Bramley 291132cab5 Refactor recv() since we needed to rewrite send(). 2011-07-22 01:11:15 +01:00
Alex Bramley 0200b741dc Fix for issues/6 (2/2): Move to using control channels and select. 2011-07-22 01:08:42 +01:00
Alex Bramley eb51558009 Fix for issues/6 (1/2): Don't close channels when disconnected. 2011-07-21 23:03:11 +01:00
Alex Bramley a5a4f989ac Update SSL connectivity to use tls.Dial now it supports a config arg. 2011-07-21 22:00:45 +01:00
Alex Bramley 9748f9c47e Oops, timeouts are int64 nanoseconds. 2011-07-21 21:59:01 +01:00
Alex Bramley 5027646478 gofix run 2011-07-18 09:14:58 +01:00
Alex Bramley 83b482f8ce Make socket timeouts a configurable thingy. 2011-07-17 13:48:12 +01:00
raylu a19bce5998 Make a timeout so that Conn.Err closes when the connection is lost 2011-07-17 13:35:15 +01:00
Alex Bramley 2a3ff18d73 Properly fix formatting. Bleh bleh bleh. 2010-12-20 22:14:22 +00:00
Alex Bramley 1d587cd3fc Helps if you add the damn element to the struct... 2010-12-19 15:22:40 +00:00
Alex Bramley bea2395160 Make timestamp format twiddleable; cosmetic re-arrangement of *Conn struct. 2010-11-23 22:18:08 +00:00
Graham Lyon 623247c995 Generalise timestamp code and default to using time.LocalTime 2010-11-23 22:08:25 +00:00
Alex Bramley 08b7d63c27 Refactor to remove line.Text and use line.Args[-1] instead. 2010-11-23 22:07:21 +00:00
Graham Lyon 8ad6e67467 Added timestamps to irc.Line and debug output 2010-11-23 20:22:35 +00:00
Alex Bramley bedbfc2899 Move irc/ to client/ and set up for goinstall. 2010-11-21 19:53:14 +00:00