001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.hadoop.hbase.rest; 019 020import static org.junit.jupiter.api.Assertions.assertEquals; 021 022import java.io.IOException; 023import javax.xml.bind.JAXBException; 024import org.apache.hadoop.hbase.rest.client.Response; 025import org.apache.hadoop.hbase.testclassification.MediumTests; 026import org.apache.hadoop.hbase.testclassification.RestTests; 027import org.junit.jupiter.api.Tag; 028import org.junit.jupiter.api.Test; 029 030@Tag(RestTests.TAG) 031@Tag(MediumTests.TAG) 032public class TestDeleteRow extends RowResourceBase { 033 034 @Test 035 public void testDeleteNonExistentColumn() throws Exception { 036 Response response = putValueJson(TABLE, ROW_1, COLUMN_1, VALUE_1); 037 assertEquals(200, response.getCode()); 038 039 response = checkAndDeleteJson(TABLE, ROW_1, COLUMN_1, VALUE_2); 040 assertEquals(304, response.getCode()); 041 assertEquals(200, getValueJson(TABLE, ROW_1, COLUMN_1).getCode()); 042 043 response = checkAndDeleteJson(TABLE, ROW_2, COLUMN_1, VALUE_2); 044 assertEquals(304, response.getCode()); 045 assertEquals(200, getValueJson(TABLE, ROW_1, COLUMN_1).getCode()); 046 047 response = checkAndDeleteJson(TABLE, ROW_1, "dummy", VALUE_1); 048 assertEquals(400, response.getCode()); 049 assertEquals(200, getValueJson(TABLE, ROW_1, COLUMN_1).getCode()); 050 051 response = checkAndDeleteJson(TABLE, ROW_1, "dummy:test", VALUE_1); 052 assertEquals(404, response.getCode()); 053 assertEquals(200, getValueJson(TABLE, ROW_1, COLUMN_1).getCode()); 054 055 response = checkAndDeleteJson(TABLE, ROW_1, "a:test", VALUE_1); 056 assertEquals(304, response.getCode()); 057 assertEquals(200, getValueJson(TABLE, ROW_1, COLUMN_1).getCode()); 058 } 059 060 @Test 061 public void testDeleteXML() throws IOException, JAXBException { 062 Response response = putValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1); 063 assertEquals(200, response.getCode()); 064 response = putValueXML(TABLE, ROW_1, COLUMN_2, VALUE_2); 065 assertEquals(200, response.getCode()); 066 checkValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1); 067 checkValueXML(TABLE, ROW_1, COLUMN_2, VALUE_2); 068 069 response = deleteValue(TABLE, ROW_1, COLUMN_1); 070 assertEquals(200, response.getCode()); 071 response = getValueXML(TABLE, ROW_1, COLUMN_1); 072 assertEquals(404, response.getCode()); 073 checkValueXML(TABLE, ROW_1, COLUMN_2, VALUE_2); 074 075 response = putValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1); 076 assertEquals(200, response.getCode()); 077 response = checkAndDeletePB(TABLE, ROW_1, COLUMN_1, VALUE_1); 078 assertEquals(200, response.getCode()); 079 response = getValueXML(TABLE, ROW_1, COLUMN_1); 080 assertEquals(404, response.getCode()); 081 082 response = deleteRow(TABLE, ROW_1); 083 assertEquals(200, response.getCode()); 084 response = getValueXML(TABLE, ROW_1, COLUMN_1); 085 assertEquals(404, response.getCode()); 086 response = getValueXML(TABLE, ROW_1, COLUMN_2); 087 assertEquals(404, response.getCode()); 088 089 // Delete a row in non existent table 090 response = deleteValue("dummy", ROW_1, COLUMN_1); 091 assertEquals(404, response.getCode()); 092 093 // Delete non existent column 094 response = deleteValue(TABLE, ROW_1, "dummy"); 095 assertEquals(404, response.getCode()); 096 } 097 098 private void testDeleteB64XML(boolean useQueryString) throws IOException, JAXBException { 099 Response response = putValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1); 100 assertEquals(200, response.getCode()); 101 response = putValueXML(TABLE, ROW_1, COLUMN_2, VALUE_2); 102 assertEquals(200, response.getCode()); 103 checkValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1); 104 checkValueXML(TABLE, ROW_1, COLUMN_2, VALUE_2); 105 106 response = deleteValueB64(TABLE, ROW_1, COLUMN_1, useQueryString); 107 assertEquals(200, response.getCode()); 108 response = getValueXML(TABLE, ROW_1, COLUMN_1); 109 assertEquals(404, response.getCode()); 110 checkValueXML(TABLE, ROW_1, COLUMN_2, VALUE_2); 111 112 response = putValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1); 113 assertEquals(200, response.getCode()); 114 response = checkAndDeletePB(TABLE, ROW_1, COLUMN_1, VALUE_1); 115 assertEquals(200, response.getCode()); 116 response = getValueXML(TABLE, ROW_1, COLUMN_1); 117 assertEquals(404, response.getCode()); 118 119 response = deleteRowB64(TABLE, ROW_1, useQueryString); 120 assertEquals(200, response.getCode()); 121 response = getValueXML(TABLE, ROW_1, COLUMN_1); 122 assertEquals(404, response.getCode()); 123 response = getValueXML(TABLE, ROW_1, COLUMN_2); 124 assertEquals(404, response.getCode()); 125 } 126 127 @Test 128 public void testDeleteB64XML() throws IOException, JAXBException { 129 testDeleteB64XML(/* useQueryString: */false); 130 testDeleteB64XML(/* useQueryString: */true); 131 } 132}