package redis.clients.jedis.tests; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; import java.util.HashSet; import java.util.Set; import org.junit.Assert; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPubSub; import redis.clients.jedis.Protocol.Command; import redis.clients.jedis.Transaction; public class JedisNewCommandsCheckTest extends Assert { @Test public void checkJedisIsUpdated() throws IOException { String[] commands = getAvailableCommands(); Set implementedCommands = getImplementedCommands(); Set missingCommands = new HashSet(); for (String command : commands) { if (!implementedCommands.contains(command.trim())) { missingCommands.add(command); } } if (!missingCommands.isEmpty()) { fail("There are missing commands: " + missingCommands.toString()); } } private Set getImplementedCommands() { // Method[] methods = Jedis.class.getDeclaredMethods(); // Set implementedCommands = new HashSet(); // for (Method method : methods) { // implementedCommands.add(method.getName().trim().toLowerCase()); // } // // methods = JedisPubSub.class.getDeclaredMethods(); // for (Method method : methods) { // implementedCommands.add(method.getName().trim().toLowerCase()); // } // // methods = Transaction.class.getDeclaredMethods(); // for (Method method : methods) { // implementedCommands.add(method.getName().trim().toLowerCase()); // } // implementedCommands.add("config"); // return implementedCommands; Set implementedCommands = new HashSet(); for(Command cmd : Command.values()){ implementedCommands.add(cmd.name().toLowerCase()); } return implementedCommands; } private String[] getAvailableCommands() throws MalformedURLException, IOException { URL url = new URL("http://dimaion.com/redis/master"); InputStream openStream = url.openStream(); DataInputStream dis = new DataInputStream(new BufferedInputStream( openStream)); byte[] all = new byte[dis.available()]; dis.readFully(all); String commandList = new String(all); String[] commands = commandList.split("\n"); return commands; } }