-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged Yavor work, refactoring and RSA1 tests #23
Conversation
Thanks for the WIP update. |
Little update
tl;dr I suspected the problem was the asynchronous code. So I created a new project and made some tests. First test:
And my surprise was: I need something in order to block the test from finishing before the async code does Second test:
Result: Success! I investigated more about it and Xcode testing suite has a nice feature for those cases 🙈.
|
Rename the status property to state Fix the member names of ARTState
Make Channel#history, Presence#history and Presence#get follow the query pattern same as RestClient#stats
There is a lot that can be shared between the Realtime and REST implementations of Channels, Presence and Messages, so this path mostly deals with getting things in place in anticipation of the sweet, sweet code reuse. In the mean time this adds the `channels` attribute on `ARTRest`, as well as tests for channel creation, publishing and presence.
Move to a new (testable) composable HTTP pipeline Use NSError instead of ARTErrorInfo
- Back to Xcode 6 version - No warnings
@ricardopereira FYI, in Ruby we had similar issues in regards to ensuring the test waits before completion. Fortunately, Ruby is quite flexible, and what I was able to do was wrap our test blocks / closures with an EventMachine block that will wait until the EventMachine reactor (evented system) is explicitly killed, see https://github.com/ably/ably-ruby/blob/master/spec/support/event_machine_helper.rb#L67-L104 if it means anything to you. I also recently realise that we were not closing connections explicitly automatically at the end of tests, so added ably/ably-ruby@1abbc8c to ensure a connection is closed from one test before the next test starts |
@mattheworiordan merge please. |
Merged Yavor work, refactoring and RSA1 tests
- This failed in RTP9a because it sometimes ends but the ACK/NACK of the last sent presence message has not arrived yet, it means the callback is pended. The callback is called when the connection closes (test ends), a "ARTErrorInfo with code 0, message: connection broken before receiving publishing acknowledgment." happens and it will crash because the callback is nil. EXC_BAD_ACCESS (code=1, address=0x10) in ARTRealtimeChannel.m:335 Thread 3 Queue : io.ably.tests (serial) #0 0x000000012186c6b4 in __47-[ARTRealtimeChannel publishPresence:callback:]_block_invoke.164 at /<redacted>/ably-cocoa/Source/ARTRealtimeChannel.m:335 #1 0x000000012186ecdd in __43-[ARTRealtimeChannel sendMessage:callback:]_block_invoke at /<redacted>/ably-cocoa/Source/ARTRealtimeChannel.m:450 #2 0x00000001218be38e in __22-[ARTEventEmitter on:]_block_invoke at /<redacted>/ably-cocoa/Source/ARTEventEmitter.m:209 #3 0x00000001083ff632 in -[__NSObserver _doit:] () #4 0x00000001094827bc in __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ () #5 0x0000000109481c3f in _CFXRegistrationPost () #6 0x0000000109481983 in ___CFXNotificationPost_block_invoke () #7 0x00000001095657c2 in -[_CFXNotificationRegistrar find:object:observer:enumerator:] () #8 0x00000001094812d1 in _CFXNotificationPost () #9 0x00000001083ffddb in -[NSNotificationCenter postNotificationName:object:userInfo:] () #10 0x00000001218bf843 in -[ARTEventEmitter emit:with:] at /<redacted>/ably-cocoa/Source/ARTEventEmitter.m:275 #11 0x0000000121915222 in -[ARTRealtime transition:withErrorInfo:] at /<redacted>/ably-cocoa/Source/ARTRealtime.m:429 #12 0x0000000121914c0a in -[ARTRealtime transition:] at /<redacted>/ably-cocoa/Source/ARTRealtime.m:412 #13 0x000000012191b755 in -[ARTRealtime onClosed] at /<redacted>/ably-cocoa/Source/ARTRealtime.m:768 #14 0x0000000121928933 in -[ARTRealtime realtimeTransport:didReceiveMessage:] at /<redacted>/ably-cocoa/Source/ARTRealtime.m:1392 #15 0x00000001218c4bef in -[ARTWebSocketTransport receive:] at /<redacted>/ably-cocoa/Source/ARTWebSocketTransport.m:109 #16 0x00000001218c4cbe in -[ARTWebSocketTransport receiveWithData:] at /<redacted>/ably-cocoa/Source/ARTWebSocketTransport.m:114 #17 0x00000001218c7c44 in -[ARTWebSocketTransport webSocketMessageData:] at /<redacted>/ably-cocoa/Source/ARTWebSocketTransport.m:367 #18 0x00000001218c77a0 in -[ARTWebSocketTransport webSocket:didReceiveMessage:] at /<redacted>/ably-cocoa/Source/ARTWebSocketTransport.m:349 #19 0x0000000121bf06c9 in __43-[SRWebSocket _handleFrameWithData:opCode:]_block_invoke.239 () #20 0x000000010b3e2ccf in _dispatch_call_block_and_release () #21 0x000000010b3e3d02 in _dispatch_client_callout () #22 0x000000010b3ea720 in _dispatch_lane_serial_drain () #23 0x000000010b3eb261 in _dispatch_lane_invoke () #24 0x000000010b3f3fcb in _dispatch_workloop_worker_thread () #25 0x000000010bb12611 in _pthread_wqthread () #26 0x000000010bb123fd in start_wqthread ()
No description provided.