/*
* Copyright 2013-2017 the original author or authors.
*
* Licensed 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.springframework.data.redis.connection;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.List;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.test.annotation.IfProfileValue;
/**
* @author Jennifer Hickey
* @author Thomas Darimont
* @author Christoph Strobl
*/
abstract public class AbstractConnectionTransactionIntegrationTests extends AbstractConnectionIntegrationTests {
@Ignore
public void testMultiDiscard() {}
@Ignore
public void testMultiExec() {}
@Ignore
public void testUnwatch() {}
@Ignore
public void testWatch() {}
@Ignore
@Test
public void testExecWithoutMulti() {}
@Ignore
@Test
public void testErrorInTx() {}
/*
* Using blocking ops inside a tx does not make a lot of sense as it would require blocking the
* entire server in order to execute the block atomically, which in turn does not allow other
* clients to perform a push operation. *
*/
@Ignore
public void testBLPop() {}
@Ignore
public void testBRPop() {}
@Ignore
public void testBRPopLPush() {}
@Ignore
public void testBLPopTimeout() {}
@Ignore
public void testBRPopTimeout() {}
@Ignore
public void testBRPopLPushTimeout() {}
@Ignore("Pub/Sub not supported with transactions")
public void testPubSubWithNamedChannels() throws Exception {}
@Ignore("Pub/Sub not supported with transactions")
public void testPubSubWithPatterns() throws Exception {}
@Ignore
public void testNullKey() throws Exception {}
@Ignore
public void testNullValue() throws Exception {}
@Ignore
public void testHashNullKey() throws Exception {}
@Ignore
public void testHashNullValue() throws Exception {}
@Test(expected = UnsupportedOperationException.class)
public void testWatchWhileInTx() {
connection.watch("foo".getBytes());
}
@Test(expected = UnsupportedOperationException.class)
@IfProfileValue(name = "redisVersion", value = "2.6+")
public void testScriptKill() {
// Impossible to call script kill in a tx because you can't issue the
// exec command while Redis is running a script
connection.scriptKill();
}
@Test // DATAREDIS-417
@Ignore
@Override
public void scanShouldReadEntireValueRangeWhenIdividualScanIterationsReturnEmptyCollection() {
super.scanShouldReadEntireValueRangeWhenIdividualScanIterationsReturnEmptyCollection();
}
protected void initConnection() {
connection.multi();
}
protected List<Object> getResults() {
return connection.exec();
}
protected void verifyResults(List<Object> expected) {
List<Object> expectedTx = new ArrayList<Object>();
for (int i = 0; i < actual.size(); i++) {
expectedTx.add(null);
}
assertEquals(expectedTx, actual);
List<Object> results = getResults();
assertEquals(expected, results);
}
}