aboutsummaryrefslogtreecommitdiffstats
path: root/actioncable/test
Commit message (Collapse)AuthorAgeFilesLines
* Cable message encodingJeremy Daer2016-03-3110-88/+168
| | | | | | | | | | | | | | | | | | | * Introduce a connection coder responsible for encoding Cable messages as WebSocket messages, defaulting to `ActiveSupport::JSON` and duck- typing to any object responding to `#encode` and `#decode`. * Consolidate encoding responsibility to the connection. No longer explicitly JSON-encode from channels or other sources. Pass Cable messages as Hashes to `#transmit` and rely on it to encode. * Introduce stream encoders responsible for decoding pubsub messages. Preserve the currently raw encoding, but make it easy to use JSON. Same duck type as the connection encoder. * Revert recent data normalization/quoting (#23649) which treated `identifier` and `data` values as nested JSON objects rather than as opaque JSON-encoded strings. That dealt us an awkward hand where we'd decode JSON strings… or not, but always encode as JSON. Embedding JSON object values directly is preferably, no extra JSON encoding, but that should be a purposeful protocol version change rather than ambiguously, inadvertently supporting multiple message formats.
* Keep logging in the ActionCable::Channel::BaseRafael Mendonça França2016-03-301-69/+0
| | | | | | To move Action Cable logging to a LoggingSubscriber we need to pass the log tags in the notification payload since Action Cable logging use the Channel instance to tag the logs.
* Merge pull request #23723 from mwear/action_cable_notificationsRafael Mendonça França2016-03-292-0/+144
|\ | | | | | | Add ActiveSupport::Notification to Channel::Base#perform_action
| * Add AS::Notifications and LogSubscriber to ActionCable::ChannelMatthew Wear2016-03-042-0/+144
| | | | | | | | | | This commit adds ActiveSupport::Notifications instrumentation hooks and a LogSuscriber to ActionCable::Channel::Base.
* | Cable: Shush pop warnings when skipping Postgres tests.Kasper Timm Hansen2016-03-261-0/+1
| | | | | | | | | | | | | | | | `skip` raises an exception to abort the execution of the test, so `super` would never be called and thus `@rx_adapter` and `@tx_adapter` would never have been defined at the time of teardown. Define them just before skipping and zap the warnings.
* | Shush up EM::Hiredis when running tests.Kasper Timm Hansen2016-03-261-0/+11
| | | | | | | | | | | | | | | | | | | | EM::Hiredis were spewing screenfuls of warnings when running the Action Cable tests. Copied over the technique that shushes up faye-websocket in the client tests, so we can reduce the noise ratio. Note: there's still warnings spewed after tests have finished when EM::Hiredis shuts down. I haven't been able to shush them up yet.
* | Gracefully handle disconnected clientsJeremy Daer2016-03-202-0/+132
| | | | | | | | | | | | | | | | We'll get `Errno::ECONNRESET` if the client forcibly disconnected. Just close the socket rather than raising the exception. Handle other errors in `ClientSocket#write`, too, mirroring the Faye error handling which swallows all `StandardError` on write.
* | AC: skip PG adapter tests if the db isn't availableJeremy Daer2016-03-111-0/+7
|/
* Merge pull request #23992 from matthewd/em-optionMatthew Draper2016-03-0413-17/+73
|\ | | | | Support faye-websocket + EventMachine as an option
| * Support faye-websocket + EventMachine as an optionMatthew Draper2016-03-0213-17/+73
| |
* | Accept JSON with no backslashes/escapingJon Moss2016-03-022-2/+3
| | | | | | | | | | | | | | Fixes #22675 Allow channel identifiers and also data with no backslahes/escaping to be accepted by the subscription storer.
* | Merge pull request #23976 from danielrhodes/enhancement/ac-ping-to-message-typeMatthew Draper2016-03-022-2/+9
|\ \ | | | | | | | | | ActionCable: Add a "welcome" and "ping" message type
| * | Make ping into a message typeDaniel Rhodes2016-03-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This change makes ping into a message type, which makes the whole protocol a lot more consistent. Also fixes hacks on the client side to make this all work.
| * | Added welcome message type and fix test hacksDaniel Rhodes2016-03-012-1/+7
| | |
* | | Merge pull request #23932 from arthurnn/arthurnn/remove_load_pathsArthur Nogueira Neves2016-03-011-3/+0
|\ \ \ | |_|/ |/| | Remove load_paths file
| * | Remove load_paths fileArthur Neves2016-02-271-3/+0
| | |
* | | Use AS::Executor / AS::Reloader to support reloading in ActionCableMatthew Draper2016-03-022-0/+24
| |/ |/|
* | Merge pull request #23811 from iamvery/string-channelDavid Heinemeier Hansson2016-02-282-0/+31
|\ \ | |/ |/| Ensure actioncable behaves as expected with non-string queues
| * Ensure server broadcasts are to string queue namesJay Hayes2016-02-241-0/+15
| | | | | | | | | | | | Similar to the channel streaming side, these values must be strings for ActionCable to behave as expected. The conversion will allow users to send string-convertible values and get the expected behavior.
| * Convert stream broadcasting to a stringJay Hayes2016-02-241-0/+17
| | | | | | | | | | | | | | ActionCable does some things behind the scenes that expects these "broadcasting"s or "channel"s to be strings. However it's not immediately obvious that the value must be a string. So adding this conversion ensures things work as expected.
| * whitespaceJay Hayes2016-02-241-1/+0
| |
* | Only hijack Rack socket when first neededJon Moss2016-02-241-0/+20
|/ | | | Fixes #23471
* Merge pull request #23789 from ↵Rafael França2016-02-231-3/+3
|\ | | | | | | | | wisetara/wisetara/deprecate-args-ActiveSupport__TestCase#assert_nothing_raised-for-pr Wisetara/deprecate args active support test case#assert nothing raised for pr
| * remove args from assert_nothing_raised in testsTara Scherner de la Fuente2016-02-221-3/+3
| |
* | Confirm connection monitor subscription on openPratik Naik2016-02-231-1/+1
|/
* Merge pull request #23715 from maclover7/fix-unsubscribeMatthew Draper2016-02-192-0/+25
|\ | | | | Fix `unsubscribed` server side behavior
| * Fix `unsubscribed` server side behaviorJon Moss2016-02-182-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit, the `unsubscribed` callbacks in Action Cable server side channels were never called. This is because when a WebSocket "goodbye" message was sent from the client, the Action Cable server didn't properly clean up after the now closed WebSocket. This means that memory could possibly skyrocket with this behavior, since part of this commit is to properly remove closed subscriptions from the global subscriptions hash. Say you have 10,000 users currently connected, and then all 10,000 disconnect -- before this patch, Action Cable would still hold onto information (and Ruby objects!) for all of these now dead connections.
* | Use a semaphore to signal message availabilityMatthew Draper2016-02-191-7/+8
|/ | | | | The Event hack was too much of a hack: on actually thinking about it, there's a rather obvious race.
* Don't rely on the global server as a receiver.Kasper Timm Hansen2016-02-143-10/+4
| | | | | | | | | | | | | | | | The `WorkerTest`'s `Receiver` is imporsonating an `ActionCable::Connection::Base`, but just delegates the logger to `ActionCable.logger`. This creates a mismatch as the connection requires the logger to be a `TaggedLoggerProxy`'ied logger, while the server doesn't. Thus to ensure an exception isn't raised when the worker tries to call `tag` other tests have to assign a proxied logger to their test server. Instead of forcing change on other tests, have Receiver adhere to the connection contract and use a `TaggedLoggerProxy`. As a consequence remove more setup from the tests.
* Default connection class to ActionCable::Connection::Base.Kasper Timm Hansen2016-02-142-16/+0
| | | | | | | Instead of depending on ApplicationCable::Connection being defined at initialize we should inject it in the Railtie. Thus we can kill more setup in the tests too.
* Inject Rails' channel paths in engine.Kasper Timm Hansen2016-02-142-17/+1
| | | | | | | | | | | | | We were explicitly referencing Rails.root in ActionCable::Server::Configuration.initialize, thereby coupling ourselves to Rails. Instead add `app/channels` to Rails' app paths and assign the existent files to `channel_paths`. Users can still append to those load paths with `<<` and `push` in `config/application.rb`. This means we can remove the custom `Dir` lookup in `channel_paths` and the Rails and root definitions in the tests.
* Cant run on an out-of-the-box OSX installation without running out of TOO ↵David Heinemeier Hansson2016-02-051-1/+1
| | | | MANY FILES OPEN
* Merge pull request #23381 from matthewd/uneventful-redisMatthew Draper2016-02-022-1/+17
|\ | | | | Redis sans EventMachine
| * Switch the default redis adapter to a single-stream modelMatthew Draper2016-02-012-1/+17
| | | | | | | | | | | | This new adapter does get a little more intimate with the redis-rb gem's implementation than I would like, but it's the least bad of the approaches I've come up with.
* | Merge pull request #23370 from maclover7/actioncable-main-travis-buildGuillermo Iguaran2016-01-311-9/+0
|\ \ | | | | | | Move Action Cable back to the main build
| * | Remove unused methodJon Moss2016-01-311-9/+0
| |/
* / Wait for EventMachine to finish startingMatthew Draper2016-02-011-0/+1
|/
* Use a gentler disconnectMatthew Draper2016-01-301-2/+2
| | | | The detach used by close! seems to be making EM very sad on Travis.
* Don't bother stopping EM between testsMatthew Draper2016-01-301-38/+3
| | | | | It's not strictly necessary, and maybe this will help with the current test failure.
* Keep the socket reference after closeMatthew Draper2016-01-301-3/+2
| | | | We may still try to send to it.
* Reduce the client count, in hope of a more consistent testMatthew Draper2016-01-301-3/+3
|
* Be more patient while gathering the expected responsesMatthew Draper2016-01-301-4/+3
|
* Handle more IO errors (especially, ECONNRESET)Matthew Draper2016-01-302-0/+31
| | | | | | Also, address the possibility of the listen thread dying and needing to be respawned. As a bonus, we now defer construction of the thread until we are first given something to monitor.
* Add a couple of tests that connect with a WS clientMatthew Draper2016-01-302-0/+251
|
* Revert "Revert "Eliminate the EventMachine dependency""Matthew Draper2016-01-308-51/+32
|
* Revert "Eliminate the EventMachine dependency"David Heinemeier Hansson2016-01-278-32/+51
|
* Ditch the EM error logging helperMatthew Draper2016-01-241-1/+0
| | | | | | We're no longer doing our work in the EM event loop, so errors are quite unlikely, and if they do occur, they're not really our responsibility to handle.
* Import the relevant portions of faye-websocketMatthew Draper2016-01-244-8/+9
| | | | (as adapted to use concurrent-ruby / nio4r instead of eventmachine)
* Using a hacked faye-websocket, drop EventMachineMatthew Draper2016-01-245-42/+23
|
* Add tests for the ActionCable adaptersMatthew Draper2016-01-247-0/+227
|