/* * * * Copyright 2016 Axibase Corporation or its affiliates. All Rights Reserved. * * * * Licensed under the Apache License, Version 2.0 (the "License"). * * You may not use this file except in compliance with the License. * * A copy of the License is located at * * * * https://www.axibase.com/atsd/axibase-apache-2.0.pdf * * * * or in the "license" file accompanying this file. This file 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 com.axibase.tsd.client.metadata; import com.axibase.tsd.RerunRule; import com.axibase.tsd.TestUtil; import com.axibase.tsd.client.AtsdServerException; import com.axibase.tsd.client.DataService; import com.axibase.tsd.client.HttpClientManager; import com.axibase.tsd.client.MetaDataService; import com.axibase.tsd.model.meta.Entity; import com.axibase.tsd.model.meta.TagAppender; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.axibase.tsd.TestUtil.*; import static junit.framework.Assert.*; /** * @author Dmitry Korchagin. */ public class EntityTest { private MetaDataService metaDataService; private DataService dataService; private HttpClientManager httpClientManager; @Rule public RerunRule rerunRule = new RerunRule(); @Before public void setUp() throws Exception { httpClientManager = buildHttpClientManager(); metaDataService = new MetaDataService(); metaDataService.setHttpClientManager(httpClientManager); dataService = new DataService(); dataService.setHttpClientManager(httpClientManager); waitWorkingServer(httpClientManager); } @After public void tearDown() { httpClientManager.close(); } @Test public void testRetrieveEntity() throws Exception { final String entityName = buildVariablePrefix(); assertTrue(metaDataService.createOrReplaceEntity(createEntity(entityName))); Entity entity = metaDataService.retrieveEntity(entityName); assertEquals(entityName, entity.getName()); assertEquals("label-" + entityName, entity.getLabel()); } @Test public void testRetrieveEntities() throws Exception { final String entityName = buildVariablePrefix(); assertTrue(metaDataService.createOrReplaceEntity(createEntity(entityName))); { List<Entity> entities = metaDataService.retrieveEntities(null, "name like '*'", TagAppender.ALL, 1); assertEquals(1, entities.size()); assertTrue(entities.get(0) instanceof Entity); entities = metaDataService.retrieveEntities("name like '*'", (String) null, null, TagAppender.ALL, 1); assertEquals(1, entities.size()); assertTrue(entities.get(0) instanceof Entity); } { List entities = metaDataService.retrieveEntities(null, "name = '" + entityName + "'", TagAppender.ALL, 1); assertEquals(1, entities.size()); assertTrue(entities.get(0) instanceof Entity); Entity entity = (Entity) entities.get(0); assertEquals(entityName, entity.getName()); assertEquals("label-" + entityName, entity.getLabel()); entities = metaDataService.retrieveEntities("name = '" + entityName + "'", (String) null, null, TagAppender.ALL, 1); assertEquals(1, entities.size()); assertTrue(entities.get(0) instanceof Entity); entity = (Entity) entities.get(0); assertEquals(entityName, entity.getName()); assertEquals("label-" + entityName, entity.getLabel()); } } @Test public void testCreateOrReplaceEntityWithoutTags() throws Exception { final String entityName = buildVariablePrefix(); if (metaDataService.retrieveEntity(entityName) != null) { metaDataService.deleteEntity(createEntity(entityName)); } assertNull(metaDataService.retrieveEntity(entityName)); assertTrue(metaDataService.createOrReplaceEntity(createEntity(entityName))); Entity newEntity = metaDataService.retrieveEntity(entityName); assertEquals(entityName, newEntity.getName()); assertEquals("label-" + entityName, newEntity.getLabel()); assertEquals(new HashMap<>(), newEntity.getTags()); } @Test public void testCreateOrReplaceEntityWithTags() throws Exception { final String entityName = buildVariablePrefix(); if (metaDataService.retrieveEntity(entityName) != null) { metaDataService.deleteEntity(createEntity(entityName)); } assertNull(metaDataService.retrieveEntity(entityName)); Entity entity = createEntity(entityName); { Map<String, String> tags = new HashMap<>(); tags.put("test-tag1", "test-tag1-val"); tags.put("test-tag2", "test-tag2-val1"); entity.setTags(tags); assertTrue(metaDataService.createOrReplaceEntity(entity)); entity = metaDataService.retrieveEntity(entityName); assertEquals(entityName, entity.getName()); assertEquals("label-" + entityName, entity.getLabel()); assertEquals(tags, entity.getTags()); } { Map<String, String> tags = new HashMap<>(); tags.put("test-tag2", "test-tag2-val2"); tags.put("test-tag3", "test-tag3-val"); entity.setTags(tags); assertTrue(metaDataService.createOrReplaceEntity(entity)); entity = metaDataService.retrieveEntity(entityName); assertEquals(entityName, entity.getName()); assertEquals("label-" + entityName, entity.getLabel()); assertEquals(tags, entity.getTags()); } } @Test(expected = AtsdServerException.class) public void testCreateOrReplaceInvalidEntityWithoutTags() throws Exception { final String entityName = "te_____st-cre ate-invalid-^%entityƒџќѕ∆-w\"ith''ou't-tags"; if (metaDataService.retrieveEntity(entityName) != null) { metaDataService.deleteEntity(createEntity(entityName)); } assertNull(metaDataService.retrieveEntity(entityName)); Entity entity = createEntity(entityName); assertFalse(metaDataService.createOrReplaceEntity(entity)); assertNull(metaDataService.retrieveEntity(entityName)); } @Test public void testCreateOrReplaceEntityWithInvalidTags() throws Exception { final String entityName = buildVariablePrefix(); if (metaDataService.retrieveEntity(entityName) != null) { metaDataService.deleteEntity(createEntity(entityName)); } assertNull(metaDataService.retrieveEntity(entityName)); Entity entity = createEntity(entityName); entity.buildTags("test- t__\\\'\" onclick=alert(1) 'g1", "test-__- tag1-val", "test-tag2", "test-tag2-val"); assertFalse(metaDataService.createOrReplaceEntity(entity)); assertNull(metaDataService.retrieveEntity(entityName)); } @Test public void testCreateAndDeleteEntity() throws Exception { final String entityName = buildVariablePrefix(); if (metaDataService.retrieveEntity(entityName) != null) { metaDataService.deleteEntity(createEntity(entityName)); } assertNull(metaDataService.retrieveEntity(entityName)); Entity entity = createEntity(entityName); entity.buildTags("nnn-test-tag-1", "nnn-test-tag-value-1"); assertTrue(metaDataService.createOrReplaceEntity(entity)); Entity newEntity = metaDataService.retrieveEntity(entityName); assertNotNull(newEntity); assertEquals(entityName, newEntity.getName()); assertEquals(entity.getLabel(), newEntity.getLabel()); assertEquals(entity.getTags(), newEntity.getTags()); assertTrue(metaDataService.deleteEntity(entity)); assertNull(metaDataService.retrieveEntity(entityName)); } private static Entity createEntity(String entityName) { Entity entity = new Entity(entityName); entity.setLabel("label-" + entityName); return entity; } }