예제 #1
0
func ParseSetUserStateResponseJSON(pubnubInstance *messaging.Pubnub, returnChannel chan []byte, channel string, key1 string, val1 string, key2 string, val2 string, jsonString string, testName string, responseChannel chan string) {
	for {
		value, ok := <-returnChannel
		if !ok {
			break
		}
		if string(value) != "[]" {
			response := fmt.Sprintf("%s", value)
			//fmt.Println("Test JSON'" + testName + "':" +response)
			jsonString = fmt.Sprintf("{\"%s\": \"%s\", \"%s\": \"%s\"}", key2, val2, key1, val1)
			if strings.Contains(response, jsonString) {
				errorChannel := make(chan []byte)
				returnChannel2 := make(chan []byte)
				time.Sleep(3 * time.Second)

				go pubnubInstance.SetUserStateKeyVal(channel, key2, "", returnChannel2, errorChannel)
				go ParseUserStateResponse(returnChannel2, channel, key1, val1, testName, responseChannel)
				go ParseErrorResponse(errorChannel, responseChannel)

				break
			} else {
				responseChannel <- "Test '" + testName + "': failed."
				break
			}
		}
	}
}
예제 #2
0
func ParseSubcribeResponseForUserState(pubnubInstance *messaging.Pubnub, t *testing.T, returnChannel chan []byte, channel string, key string, val string, testName string, responseChannel chan string) {
	for {
		value, ok := <-returnChannel
		if !ok {
			break
		}
		if string(value) != "[]" {
			response := fmt.Sprintf("%s", value)
			message := "'" + channel + "' connected"
			messageReconn := "'" + channel + "' reconnected"
			if (strings.Contains(response, message)) || (strings.Contains(response, messageReconn)) {
				time.Sleep(1 * time.Second)
				errorChannel := make(chan []byte)
				returnChannel2 := make(chan []byte)

				go pubnubInstance.SetUserStateKeyVal(channel, key, val, returnChannel2, errorChannel)
				go ParseSetUserStateResponse(pubnubInstance, returnChannel2, channel, key, val, testName, responseChannel)
				go ParseErrorResponse(errorChannel, responseChannel)
			}
			break
		}
	}
}