| package org.apache.helix.webapp; |
| |
| /* |
| * 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. |
| */ |
| |
| import java.io.IOException; |
| import java.io.StringReader; |
| import java.io.StringWriter; |
| import java.util.concurrent.CountDownLatch; |
| |
| import org.apache.helix.ZNRecord; |
| import org.codehaus.jackson.map.ObjectMapper; |
| import org.restlet.Client; |
| import org.restlet.Request; |
| import org.restlet.Response; |
| import org.restlet.data.MediaType; |
| import org.restlet.data.Method; |
| import org.restlet.data.Reference; |
| import org.restlet.data.Status; |
| import org.restlet.representation.Representation; |
| import org.testng.Assert; |
| |
| public class AdminTestHelper { |
| |
| public static class AdminThread { |
| Thread _adminThread; |
| CountDownLatch _stopCountDown = new CountDownLatch(1); |
| String _zkAddr; |
| int _port; |
| |
| public AdminThread(String zkAddr, int port) { |
| _zkAddr = zkAddr; |
| _port = port; |
| } |
| |
| public void start() { |
| Thread adminThread = new Thread(new Runnable() { |
| @Override |
| public void run() { |
| HelixAdminWebApp app = null; |
| try { |
| app = new HelixAdminWebApp(_zkAddr, _port); |
| app.start(); |
| // Thread.currentThread().join(); |
| _stopCountDown.await(); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } finally { |
| if (app != null) { |
| // System.err.println("Stopping HelixAdminWebApp"); |
| app.stop(); |
| } |
| } |
| } |
| }); |
| |
| adminThread.setDaemon(true); |
| adminThread.start(); |
| } |
| |
| public void stop() { |
| _stopCountDown.countDown(); |
| } |
| } |
| |
| public static ZNRecord get(Client client, String url) throws IOException { |
| Reference resourceRef = new Reference(url); |
| Request request = new Request(Method.GET, resourceRef); |
| Response response = client.handle(request); |
| Assert.assertEquals(response.getStatus(), Status.SUCCESS_OK); |
| Representation result = response.getEntity(); |
| StringWriter sw = new StringWriter(); |
| result.write(sw); |
| |
| String responseStr = sw.toString(); |
| Assert.assertTrue(responseStr.toLowerCase().indexOf("error") == -1); |
| Assert.assertTrue(responseStr.toLowerCase().indexOf("exception") == -1); |
| ObjectMapper mapper = new ObjectMapper(); |
| ZNRecord record = mapper.readValue(new StringReader(responseStr), ZNRecord.class); |
| return record; |
| } |
| |
| public static void delete(Client client, String url) throws IOException { |
| Reference resourceRef = new Reference(url); |
| Request request = new Request(Method.DELETE, resourceRef); |
| Response response = client.handle(request); |
| Assert.assertEquals(response.getStatus(), Status.SUCCESS_NO_CONTENT); |
| } |
| |
| public static ZNRecord post(Client client, String url, String body) |
| throws IOException { |
| Reference resourceRef = new Reference(url); |
| Request request = new Request(Method.POST, resourceRef); |
| |
| request.setEntity(body, MediaType.APPLICATION_ALL); |
| |
| Response response = client.handle(request); |
| Assert.assertEquals(response.getStatus(), Status.SUCCESS_OK); |
| Representation result = response.getEntity(); |
| StringWriter sw = new StringWriter(); |
| |
| if (result != null) { |
| result.write(sw); |
| } |
| String responseStr = sw.toString(); |
| Assert.assertTrue(responseStr.toLowerCase().indexOf("error") == -1); |
| Assert.assertTrue(responseStr.toLowerCase().indexOf("exception") == -1); |
| |
| ObjectMapper mapper = new ObjectMapper(); |
| ZNRecord record = mapper.readValue(new StringReader(responseStr), ZNRecord.class); |
| return record; |
| } |
| } |