// ParseSubscribeResponseAndCallUnsubscribe will parse the response on the go channel. // It will check the subscribe connection status and when connected // it will initiate the unsubscribe request. func ParseSubscribeResponseAndCallUnsubscribe(pubnubInstance *messaging.Pubnub, returnChannel chan []byte, channel string, message string, responseChannel chan string) { for { value, ok := <-returnChannel if !ok { break } if string(value) != "[]" { response := fmt.Sprintf("%s", value) message = "'" + channel + "' " + message //messageAbort := "'" + channel + "' aborted" //fmt.Printf("response:",response); //fmt.Printf("message:", message); if strings.Contains(response, message) { returnUnsubscribeChannel := make(chan []byte) errorChannel := make(chan []byte) go pubnubInstance.Unsubscribe(channel, returnUnsubscribeChannel, errorChannel) go ParseUnsubscribeResponse(returnUnsubscribeChannel, channel, "unsubscribed", responseChannel) go ParseResponseDummy(errorChannel) break } /*else if (strings.Contains(response, messageAbort)){ responseChannel <- "Test unsubscribed: failed." break } else { responseChannel <- "Test unsubscribed: failed." break }*/ } } }
func CommonUserState(pubnubInstance *messaging.Pubnub, t *testing.T, channel string, key string, val string, testName string) { returnSubscribeChannel := make(chan []byte) errorChannel := make(chan []byte) waitChannel := make(chan string) //returnChannel := make(chan []byte) responseChannel := make(chan string) go pubnubInstance.Subscribe(channel, "", returnSubscribeChannel, false, errorChannel) go ParseSubcribeResponseForUserState(pubnubInstance, t, returnSubscribeChannel, channel, key, val, testName, responseChannel) go ParseResponseDummy(errorChannel) //go ParseErrorResponse(errorChannel, responseChannel) go WaitForCompletion(responseChannel, waitChannel) ParseWaitResponse(waitChannel, t, testName) go pubnubInstance.Unsubscribe(channel, returnSubscribeChannel, errorChannel) pubnubInstance.CloseExistingConnection() time.Sleep(2 * time.Second) }