Search in sources :

Example 36 with ArrayNode

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ArrayNode in project asterixdb by apache.

the class ConnectorApiServletTest method testGet.

@Test
public void testGet() throws Exception {
    // Starts test asterixdb cluster.
    SqlppExecutionTest.setUp();
    // Configures a test connector api servlet.
    ConnectorApiServlet let = new ConnectorApiServlet(new ConcurrentHashMap<>(), new String[] { "/" }, (ICcApplicationContext) ExecutionTestUtil.integrationUtil.cc.getApplicationContext());
    Map<String, NodeControllerInfo> nodeMap = new HashMap<>();
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    PrintWriter outputWriter = new PrintWriter(outputStream);
    // Creates mocks.
    IHyracksClientConnection mockHcc = mock(IHyracksClientConnection.class);
    NodeControllerInfo mockInfo1 = mock(NodeControllerInfo.class);
    NodeControllerInfo mockInfo2 = mock(NodeControllerInfo.class);
    IServletRequest mockRequest = mock(IServletRequest.class);
    IServletResponse mockResponse = mock(IServletResponse.class);
    FullHttpRequest mockHttpRequest = mock(FullHttpRequest.class);
    // Put stuff in let map
    let.ctx().put(ServletConstants.HYRACKS_CONNECTION_ATTR, mockHcc);
    // Sets up mock returns.
    when(mockRequest.getHttpRequest()).thenReturn(mockHttpRequest);
    when(mockHttpRequest.method()).thenReturn(HttpMethod.GET);
    when(mockRequest.getParameter("dataverseName")).thenReturn("Metadata");
    when(mockRequest.getParameter("datasetName")).thenReturn("Dataset");
    when(mockResponse.writer()).thenReturn(outputWriter);
    when(mockHcc.getNodeControllerInfos()).thenReturn(nodeMap);
    when(mockInfo1.getNetworkAddress()).thenReturn(new NetworkAddress("127.0.0.1", 3099));
    when(mockInfo2.getNetworkAddress()).thenReturn(new NetworkAddress("127.0.0.2", 3099));
    // Calls ConnectorAPIServlet.formResponseObject.
    nodeMap.put("asterix_nc1", mockInfo1);
    nodeMap.put("asterix_nc2", mockInfo2);
    let.handle(mockRequest, mockResponse);
    // Constructs the actual response.
    ObjectMapper om = new ObjectMapper();
    ObjectNode actualResponse = (ObjectNode) om.readTree(outputStream.toString());
    // Checks the temp-or-not, primary key, data type of the dataset.
    boolean temp = actualResponse.get("temp").asBoolean();
    Assert.assertFalse(temp);
    String primaryKey = actualResponse.get("keys").asText();
    Assert.assertEquals("DataverseName,DatasetName", primaryKey);
    ARecordType recordType = (ARecordType) JSONDeserializerForTypes.convertFromJSON(actualResponse.get("type"));
    Assert.assertEquals(getMetadataRecordType("Metadata", "Dataset"), recordType);
    // Checks the correctness of results.
    ArrayNode splits = (ArrayNode) actualResponse.get("splits");
    String path = (splits.get(0)).get("path").asText();
    Assert.assertTrue(path.endsWith("Metadata/Dataset_idx_Dataset"));
    // Tears down the asterixdb cluster.
    SqlppExecutionTest.tearDown();
}
Also used : IHyracksClientConnection(org.apache.hyracks.api.client.IHyracksClientConnection) FullHttpRequest(io.netty.handler.codec.http.FullHttpRequest) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) HashMap(java.util.HashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IServletRequest(org.apache.hyracks.http.api.IServletRequest) NetworkAddress(org.apache.hyracks.api.comm.NetworkAddress) NodeControllerInfo(org.apache.hyracks.api.client.NodeControllerInfo) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) ConnectorApiServlet(org.apache.asterix.api.http.server.ConnectorApiServlet) IServletResponse(org.apache.hyracks.http.api.IServletResponse) ARecordType(org.apache.asterix.om.types.ARecordType) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) PrintWriter(java.io.PrintWriter) Test(org.junit.Test) SqlppExecutionTest(org.apache.asterix.test.runtime.SqlppExecutionTest)

Example 37 with ArrayNode

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ArrayNode in project asterixdb by apache.

the class ShutdownApiServlet method post.

@Override
protected void post(IServletRequest request, IServletResponse response) {
    IHyracksClientConnection hcc = (IHyracksClientConnection) ctx.get(HYRACKS_CONNECTION_ATTR);
    boolean terminateNCServices = "true".equalsIgnoreCase(request.getParameter("all"));
    Thread t = new Thread(() -> {
        try {
            hcc.stopCluster(terminateNCServices);
        } catch (Exception e) {
            GlobalConfig.ASTERIX_LOGGER.log(Level.SEVERE, "Exception stopping cluster", e);
        }
    }, "Shutdown Servlet Worker");
    try {
        HttpUtil.setContentType(response, HttpUtil.ContentType.APPLICATION_JSON, HttpUtil.Encoding.UTF8);
    } catch (IOException e) {
        LOGGER.log(Level.WARNING, "Failure handling request", e);
        response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR);
        return;
    }
    response.setStatus(HttpResponseStatus.ACCEPTED);
    ObjectMapper om = new ObjectMapper();
    ObjectNode jsonObject = om.createObjectNode();
    try {
        jsonObject.put("status", "SHUTTING_DOWN");
        jsonObject.put("date", new Date().toString());
        ObjectNode clusterState = ClusterStateManager.INSTANCE.getClusterStateDescription();
        ArrayNode ncs = (ArrayNode) clusterState.get("ncs");
        for (int i = 0; i < ncs.size(); i++) {
            ObjectNode nc = (ObjectNode) ncs.get(i);
            String node = nc.get(NODE_ID_KEY).asText();
            ObjectNode details = (ObjectNode) om.readTree(hcc.getNodeDetailsJSON(node, false, true));
            nc.set(PID, details.get(PID));
            if (details.has(INI) && details.get(INI).has(NCSERVICE_PID)) {
                nc.put(NCSERVICE_PID, details.get(INI).get(NCSERVICE_PID).asInt());
            }
        }
        jsonObject.set("cluster", clusterState);
        final PrintWriter writer = response.writer();
        writer.print(JSONUtil.convertNode(jsonObject));
        writer.close();
    } catch (Exception e) {
        GlobalConfig.ASTERIX_LOGGER.log(Level.INFO, "Exception writing response", e);
    }
    t.start();
}
Also used : IHyracksClientConnection(org.apache.hyracks.api.client.IHyracksClientConnection) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) IOException(java.io.IOException) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) IOException(java.io.IOException) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Date(java.util.Date) PrintWriter(java.io.PrintWriter)

Example 38 with ArrayNode

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ArrayNode in project asterixdb by apache.

the class NodeControllerDetailsApiServlet method processNode.

private ObjectNode processNode(IServletRequest request, IHyracksClientConnection hcc) throws Exception {
    String localPath = localPath(request);
    if (localPath.endsWith("/")) {
        throw new IllegalArgumentException();
    }
    String[] parts = localPath.substring(1).split("/");
    final String node = parts[0];
    if (parts.length == 1) {
        ArrayNode ncs = (ArrayNode) getClusterStateJSON(request, "../../").get("ncs");
        for (int i = 0; i < ncs.size(); i++) {
            if (node.equals(ncs.get(i).get("node_id").asText())) {
                return (ObjectNode) ncs.get(i);
            }
        }
        if ("cc".equals(node)) {
            return om.createObjectNode();
        }
        throw new IllegalArgumentException();
    } else if (parts.length == 2) {
        ObjectNode json;
        switch(parts[1]) {
            case "config":
                json = processNodeConfig(hcc, node);
                break;
            case "stats":
                json = processNodeStats(hcc, node);
                break;
            case "threaddump":
                return processNodeThreadDump(hcc, node);
            default:
                throw new IllegalArgumentException();
        }
        fixupKeys(json);
        return json;
    } else {
        throw new IllegalArgumentException();
    }
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode)

Example 39 with ArrayNode

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ArrayNode in project asterixdb by apache.

the class NodeControllerDetailsApiServlet method processNodeStats.

protected ObjectNode processNodeStats(IHyracksClientConnection hcc, String node) throws Exception {
    final String details = hcc.getNodeDetailsJSON(node, true, false);
    if (details == null) {
        throw new IllegalArgumentException();
    }
    ObjectNode json = (ObjectNode) om.readTree(details);
    int index = json.get("rrd-ptr").asInt() - 1;
    json.remove("rrd-ptr");
    List<String> keys = new ArrayList<>();
    for (Iterator<String> iter = json.fieldNames(); iter.hasNext(); ) {
        keys.add(iter.next());
    }
    final ArrayNode gcNames = (ArrayNode) json.get("gc-names");
    final ArrayNode gcCollectionTimes = (ArrayNode) json.get("gc-collection-times");
    final ArrayNode gcCollectionCounts = (ArrayNode) json.get("gc-collection-counts");
    for (String key : keys) {
        if (key.startsWith("gc-")) {
            json.remove(key);
        } else {
            final JsonNode keyNode = json.get(key);
            if (keyNode instanceof ArrayNode) {
                final ArrayNode valueArray = (ArrayNode) keyNode;
                // fixup an index of -1 to the final element in the array (i.e. RRD_SIZE)
                if (index == -1) {
                    index = valueArray.size() - 1;
                }
                final JsonNode value = valueArray.get(index);
                json.remove(key);
                json.set(key.replaceAll("s$", ""), value);
            }
        }
    }
    ArrayNode gcs = om.createArrayNode();
    for (int i = 0; i < gcNames.size(); i++) {
        ObjectNode gc = om.createObjectNode();
        gc.set("name", gcNames.get(i));
        gc.set("collection-time", ((ArrayNode) gcCollectionTimes.get(i)).get(index));
        gc.set("collection-count", ((ArrayNode) gcCollectionCounts.get(i)).get(index));
        gcs.add(gc);
    }
    json.set("gcs", gcs);
    return json;
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ArrayList(java.util.ArrayList) JsonNode(com.fasterxml.jackson.databind.JsonNode) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode)

Example 40 with ArrayNode

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ArrayNode in project asterixdb by apache.

the class JobStatusAPIIntegrationTest method checkActivityCluster.

protected void checkActivityCluster(ObjectNode result) {
    Assert.assertTrue(result.has("activity-clusters"));
    ArrayNode actClusters = (ArrayNode) result.get("activity-clusters");
    Assert.assertEquals(1, actClusters.size());
    ObjectNode actCluster = (ObjectNode) actClusters.get(0);
    Assert.assertTrue(actCluster.has("activities"));
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode)

Aggregations

ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)979 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)542 JsonNode (com.fasterxml.jackson.databind.JsonNode)402 Test (org.junit.Test)140 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)125 ArrayList (java.util.ArrayList)110 IOException (java.io.IOException)93 Map (java.util.Map)74 HashMap (java.util.HashMap)68 List (java.util.List)50 TextNode (com.fasterxml.jackson.databind.node.TextNode)38 Test (org.testng.annotations.Test)35 DefaultSerializerProvider (com.fasterxml.jackson.databind.ser.DefaultSerializerProvider)30 HashSet (java.util.HashSet)30 JsonNodeFactory (com.fasterxml.jackson.databind.node.JsonNodeFactory)25 Deployment (org.activiti.engine.test.Deployment)23 File (java.io.File)22 InputStream (java.io.InputStream)20 Iterator (java.util.Iterator)20 StringEntity (org.apache.http.entity.StringEntity)20