blob: b4f62005e41bb35f30fd96c78078ff8634d795ac [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jclouds.openstack.marconi.v1.features;
import com.squareup.okhttp.mockwebserver.MockResponse;
import com.squareup.okhttp.mockwebserver.MockWebServer;
import org.jclouds.openstack.marconi.v1.MarconiApi;
import org.jclouds.openstack.marconi.v1.domain.Claim;
import org.jclouds.openstack.marconi.v1.domain.Message;
import org.jclouds.openstack.v2_0.internal.BaseOpenStackMockTest;
import org.testng.annotations.Test;
import java.util.List;
import java.util.UUID;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
@Test
public class ClaimApiMockTest extends BaseOpenStackMockTest<MarconiApi> {
private static final UUID CLIENT_ID = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
public void claimMessages() throws Exception {
MockWebServer server = mockOpenStackServer();
server.enqueue(new MockResponse().setBody(accessRackspace));
server.enqueue(new MockResponse().setResponseCode(201).setBody("[{\"body\": \"{\\\"event\\\":{\\\"name\\\":\\\"HK Java User Group\\\",\\\"attendees\\\":[\\\"bob\\\",\\\"jim\\\",\\\"sally\\\"]}}\", \"age\": 1997, \"href\": \"/v1/queues/jclouds-test/messages/52a645633ac24e6f0be88d44?claim_id=52a64d30ef913e6d05e7f786\", \"ttl\": 86400}, {\"body\": \"{\\\"event\\\":{\\\"name\\\":\\\"SF Java User Group\\\",\\\"attendees\\\":[\\\"bob\\\",\\\"jim\\\",\\\"sally\\\"]}}\", \"age\": 981, \"href\": \"/v1/queues/jclouds-test/messages/52a6495bef913e6d195dcffe?claim_id=52a64d30ef913e6d05e7f786\", \"ttl\": 86400}]"));
try {
MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
List<Message> messages = claimApi.claim(300, 200, 2);
assertEquals(messages.size(), 2);
assertEquals(messages.get(0).getId(), "52a645633ac24e6f0be88d44");
assertEquals(messages.get(0).getClaimId().get(), "52a64d30ef913e6d05e7f786");
assertEquals(messages.get(0).getTTL(), 86400);
assertEquals(messages.get(1).getId(), "52a6495bef913e6d195dcffe");
assertEquals(messages.get(1).getClaimId().get(), "52a64d30ef913e6d05e7f786");
assertEquals(messages.get(1).getTTL(), 86400);
assertEquals(server.getRequestCount(), 2);
assertEquals(server.takeRequest().getRequestLine(), "POST /tokens HTTP/1.1");
assertEquals(server.takeRequest().getRequestLine(), "POST /v1/123123/queues/jclouds-test/claims?limit=2 HTTP/1.1");
}
finally {
server.shutdown();
}
}
public void getClaim() throws Exception {
MockWebServer server = mockOpenStackServer();
server.enqueue(new MockResponse().setBody(accessRackspace));
server.enqueue(new MockResponse().setResponseCode(201).setBody("{\"age\": 209, \"href\": \"/v1/queues/jclouds-test/claims/52a8d23eb04a584f1bbd4f47\", \"messages\": [{\"body\": \"{\\\"event\\\":{\\\"name\\\":\\\"SF Java User Group\\\",\\\"attendees\\\":[\\\"bob\\\",\\\"jim\\\",\\\"sally\\\"]}}\", \"age\": 12182, \"href\": \"/v1/queues/jclouds-test/messages/52a8a379b04a584f2ec2bc3e?claim_id=52a8d23eb04a584f1bbd4f47\", \"ttl\": 86400}, {\"body\": \"{\\\"event\\\":{\\\"name\\\":\\\"Austin Java User Group\\\",\\\"attendees\\\":[\\\"bob\\\",\\\"jim\\\",\\\"sally\\\"]}}\", \"age\": 12182, \"href\": \"/v1/queues/jclouds-test/messages/52a8a379b04a584f2ec2bc3f?claim_id=52a8d23eb04a584f1bbd4f47\", \"ttl\": 86400}], \"ttl\": 300}"));
try {
MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
Claim claim = claimApi.get("52a8d23eb04a584f1bbd4f47");
assertEquals(claim.getMessages().size(), 2);
assertEquals(claim.getId(), "52a8d23eb04a584f1bbd4f47");
assertEquals(claim.getAge(), 209);
assertEquals(claim.getTTL(), 300);
assertEquals(claim.getMessages().get(0).getId(), "52a8a379b04a584f2ec2bc3e");
assertEquals(claim.getMessages().get(0).getClaimId().get(), "52a8d23eb04a584f1bbd4f47");
assertEquals(claim.getMessages().get(0).getAge(), 12182);
assertEquals(claim.getMessages().get(0).getTTL(), 86400);
assertEquals(claim.getMessages().get(1).getId(), "52a8a379b04a584f2ec2bc3f");
assertEquals(claim.getMessages().get(1).getClaimId().get(), "52a8d23eb04a584f1bbd4f47");
assertEquals(claim.getMessages().get(1).getAge(), 12182);
assertEquals(claim.getMessages().get(1).getTTL(), 86400);
assertEquals(server.getRequestCount(), 2);
assertEquals(server.takeRequest().getRequestLine(), "POST /tokens HTTP/1.1");
assertEquals(server.takeRequest().getRequestLine(), "GET /v1/123123/queues/jclouds-test/claims/52a8d23eb04a584f1bbd4f47 HTTP/1.1");
}
finally {
server.shutdown();
}
}
/**
* Disabled due to PATCH with an output (body content) is not supported over HTTP.
*
* See https://issues.apache.org/jira/browse/JCLOUDS-405
*/
@Test
public void updateClaim() throws Exception {
MockWebServer server = mockOpenStackServer();
server.enqueue(new MockResponse().setBody(accessRackspace));
server.enqueue(new MockResponse().setResponseCode(204));
try {
MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
boolean success = claimApi.update("52a8d23eb04a584f1bbd4f47", 400);
assertTrue(success);
assertEquals(server.getRequestCount(), 2);
assertEquals(server.takeRequest().getRequestLine(), "POST /tokens HTTP/1.1");
assertEquals(server.takeRequest().getRequestLine(), "PATCH /v1/123123/queues/jclouds-test/claims/52a8d23eb04a584f1bbd4f47 HTTP/1.1");
}
finally {
server.shutdown();
}
}
public void releaseClaim() throws Exception {
MockWebServer server = mockOpenStackServer();
server.enqueue(new MockResponse().setBody(accessRackspace));
server.enqueue(new MockResponse().setResponseCode(204));
try {
MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
boolean success = claimApi.release("52a8d23eb04a584f1bbd4f47");
assertTrue(success);
assertEquals(server.getRequestCount(), 2);
assertEquals(server.takeRequest().getRequestLine(), "POST /tokens HTTP/1.1");
assertEquals(server.takeRequest().getRequestLine(), "DELETE /v1/123123/queues/jclouds-test/claims/52a8d23eb04a584f1bbd4f47 HTTP/1.1");
}
finally {
server.shutdown();
}
}
}