You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2018/09/06 16:03:17 UTC
[07/51] [abbrv] mina-sshd git commit: [SSHD-842] Split common
utilities code from sshd-core into sshd-common (new artifact)
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/GenericUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/GenericUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/GenericUtilsTest.java
deleted file mode 100644
index a83b9de..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/GenericUtilsTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class GenericUtilsTest extends BaseTestSupport {
- public GenericUtilsTest() {
- super();
- }
-
- @Test
- public void testSplitAndJoin() {
- List<String> expected = Collections.unmodifiableList(
- Arrays.asList(getClass().getPackage().getName().replace('.', '/'), getClass().getSimpleName(), getCurrentTestName()));
-
- // NOTE: we also test characters that have meaning in String.split(...) as regex ones
- for (char ch : new char[]{',', '.', '*', '?'}) {
- String sep = String.valueOf(ch);
- String s = GenericUtils.join(expected, sep);
- String[] actual = GenericUtils.split(s, ch);
- assertEquals("Mismatched split length for separator=" + sep, expected.size(), GenericUtils.length((Object[]) actual));
-
- for (int index = 0; index < actual.length; index++) {
- String e = expected.get(index);
- String a = actual[index];
- if (!e.endsWith(a)) {
- fail("Mismatched value at index=" + index + " for separator=" + sep + ": expected=" + e + ", actual=" + a);
- }
- }
- }
- }
-
- @Test
- public void testStripQuotes() {
- String expected = getCurrentTestName();
- assertSame("Unexpected un-quoted stripping", expected, GenericUtils.stripQuotes(expected));
-
- StringBuilder sb = new StringBuilder(2 + expected.length()).append('|').append(expected).append('|');
- for (int index = 0; index < GenericUtils.QUOTES.length(); index++) {
- char delim = GenericUtils.QUOTES.charAt(index);
- sb.setCharAt(0, delim);
- sb.setCharAt(sb.length() - 1, delim);
-
- CharSequence actual = GenericUtils.stripQuotes(sb);
- assertEquals("Mismatched result for delim (" + delim + ")", expected, actual.toString());
- }
- }
-
- @Test
- public void testStripOnlyFirstLayerQuotes() {
- StringBuilder sb = new StringBuilder().append("||").append(getCurrentTestName()).append("||");
- char[] delims = {'\'', '"', '"', '\''};
- for (int index = 0; index < delims.length; index += 2) {
- char topDelim = delims[index];
- char innerDelim = delims[index + 1];
- sb.setCharAt(0, topDelim);
- sb.setCharAt(1, innerDelim);
- sb.setCharAt(sb.length() - 2, innerDelim);
- sb.setCharAt(sb.length() - 1, topDelim);
-
- CharSequence expected = sb.subSequence(1, sb.length() - 1);
- CharSequence actual = GenericUtils.stripQuotes(sb);
- assertEquals("Mismatched result for delim (" + topDelim + "/" + innerDelim + ")", expected.toString(), actual.toString());
- }
- }
-
- @Test
- public void testStripDelimiters() {
- String expected = getCurrentTestName();
- final char delim = '|';
- assertSame("Unexpected un-delimited stripping", expected, GenericUtils.stripDelimiters(expected, delim));
-
- CharSequence actual = GenericUtils.stripDelimiters(
- new StringBuilder(2 + expected.length()).append(delim).append(expected).append(delim), delim);
- assertEquals("Mismatched stripped values", expected, actual.toString());
- }
-
- @Test
- public void testStripDelimitersOnlyIfOnBothEnds() {
- final char delim = '$';
- StringBuilder expected = new StringBuilder().append(delim).append(getCurrentTestName()).append(delim);
- for (int index : new int[]{0, expected.length() - 1}) {
- // restore original delimiters
- expected.setCharAt(0, delim);
- expected.setCharAt(expected.length() - 1, delim);
- // trash one end
- expected.setCharAt(index, (char) (delim + 1));
-
- assertSame("Mismatched result for delim at index=" + index, expected, GenericUtils.stripDelimiters(expected, delim));
- }
- }
-
- @Test
- public void testAccumulateExceptionOnNullValues() {
- assertNull("Unexpected null/null result", GenericUtils.accumulateException(null, null));
-
- Throwable expected = new NoSuchMethodException(getClass().getName() + "#" + getCurrentTestName());
- assertSame("Mismatched null/extra result", expected, GenericUtils.accumulateException(null, expected));
- assertSame("Mismatched current/null result", expected, GenericUtils.accumulateException(expected, null));
- }
-
- @Test
- public void testAccumulateExceptionOnExistingCurrent() {
- RuntimeException[] expected = new RuntimeException[]{
- new IllegalArgumentException(getCurrentTestName()),
- new ClassCastException(getClass().getName()),
- new NoSuchElementException(getClass().getPackage().getName())
- };
- RuntimeException current = new UnsupportedOperationException("top");
- for (RuntimeException extra : expected) {
- RuntimeException actual = GenericUtils.accumulateException(current, extra);
- assertSame("Mismatched returned actual exception", current, actual);
- }
-
- Throwable[] actual = current.getSuppressed();
- assertArrayEquals("Suppressed", expected, actual);
- }
-
- @Test
- public void testNullOrEmptyCharArrayComparison() {
- char[][] values = new char[][]{null, GenericUtils.EMPTY_CHAR_ARRAY};
- for (char[] c1 : values) {
- for (char[] c2 : values) {
- assertEquals(((c1 == null) ? "null" : "empty") + " vs. " + ((c2 == null) ? "null" : "empty"), 0, GenericUtils.compare(c1, c2));
- }
- }
- }
-
- @Test
- public void testCharArrayComparison() {
- String s1 = getClass().getSimpleName();
- char[] c1 = s1.toCharArray();
- assertEquals("Same value equality", 0, GenericUtils.compare(c1, s1.toCharArray()));
-
- String s2 = getCurrentTestName();
- char[] c2 = s2.toCharArray();
- assertEquals("s1 vs. s2", Integer.signum(s1.compareTo(s2)), Integer.signum(GenericUtils.compare(c1, c2)));
- assertEquals("s2 vs. s1", Integer.signum(s2.compareTo(s1)), Integer.signum(GenericUtils.compare(c2, c1)));
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/Int2IntFunctionTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/Int2IntFunctionTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/Int2IntFunctionTest.java
deleted file mode 100644
index 941190b..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/Int2IntFunctionTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util;
-
-import java.util.Random;
-import java.util.function.IntUnaryOperator;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class Int2IntFunctionTest extends BaseTestSupport {
- public Int2IntFunctionTest() {
- super();
- }
-
- @Test
- public void testAdd() {
- int factor = Byte.SIZE;
- IntUnaryOperator func = Int2IntFunction.add(factor);
- for (int index = 1, sum = 0; index <= Byte.SIZE; index++) {
- sum = func.applyAsInt(sum);
- assertEquals(factor * index, sum);
- }
- }
-
- @Test
- public void testAddIdentity() {
- IntUnaryOperator func = Int2IntFunction.add(0);
- Random rnd = new Random(System.nanoTime());
- for (int index = 1; index <= Byte.SIZE; index++) {
- int expected = rnd.nextInt();
- int actual = func.applyAsInt(expected);
- assertEquals(expected, actual);
- }
- }
-
- @Test
- public void testSub() {
- int factor = Byte.SIZE;
- IntUnaryOperator func = Int2IntFunction.sub(factor);
- for (int index = 1, sum = 0; index <= Byte.SIZE; index++) {
- sum = func.applyAsInt(sum);
- assertEquals(factor * index * -1, sum);
- }
- }
-
- @Test
- public void testSubIdentity() {
- IntUnaryOperator func = Int2IntFunction.sub(0);
- Random rnd = new Random(System.nanoTime());
- for (int index = 1; index <= Byte.SIZE; index++) {
- int expected = rnd.nextInt();
- int actual = func.applyAsInt(expected);
- assertEquals(expected, actual);
- }
- }
-
- @Test
- public void testMul() {
- int factor = 2;
- IntUnaryOperator func = Int2IntFunction.mul(factor);
- for (int index = 1, mul = 1, expected = factor; index <= Byte.SIZE; index++, expected *= factor) {
- mul = func.applyAsInt(mul);
- assertEquals(expected, mul);
- }
- }
-
- @Test
- public void testMulIdentity() {
- IntUnaryOperator func = Int2IntFunction.mul(1);
- Random rnd = new Random(System.nanoTime());
- for (int index = 1; index <= Byte.SIZE; index++) {
- int expected = rnd.nextInt();
- int actual = func.applyAsInt(expected);
- assertEquals(expected, actual);
- }
- }
-
- @Test
- public void testMulZero() {
- IntUnaryOperator func = Int2IntFunction.mul(0);
- Random rnd = new Random(System.nanoTime());
- for (int index = 1; index <= Byte.SIZE; index++) {
- int value = rnd.nextInt();
- int actual = func.applyAsInt(value);
- assertEquals(Integer.toString(value), 0, actual);
- }
- }
-
- @Test
- public void testConstant() {
- int expected = 377347;
- IntUnaryOperator func = Int2IntFunction.constant(expected);
- Random rnd = new Random(System.nanoTime());
- for (int index = 1; index <= Byte.SIZE; index++) {
- int value = rnd.nextInt();
- int actual = func.applyAsInt(value);
- assertEquals(Integer.toString(value), expected, actual);
- }
- }
-
- @Test
- public void testDiv() {
- int factor = 2;
- IntUnaryOperator func = Int2IntFunction.div(factor);
- for (int index = 1, quot = 65536, expected = quot / factor; index <= Byte.SIZE; index++, expected /= factor) {
- quot = func.applyAsInt(quot);
- assertEquals(expected, quot);
- }
- }
-
- @Test
- public void testDivIdentity() {
- IntUnaryOperator func = Int2IntFunction.div(1);
- Random rnd = new Random(System.nanoTime());
- for (int index = 1; index <= Byte.SIZE; index++) {
- int expected = rnd.nextInt();
- int actual = func.applyAsInt(expected);
- assertEquals(expected, actual);
- }
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testDivZeroFactor() {
- IntUnaryOperator func = Int2IntFunction.div(0);
- fail("Unexpected success: " + func);
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/NumberUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/NumberUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/NumberUtilsTest.java
deleted file mode 100644
index 8109b55..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/NumberUtilsTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class NumberUtilsTest extends BaseTestSupport {
- public NumberUtilsTest() {
- super();
- }
-
- @Test
- public void testPowersOf2List() {
- assertEquals("Mismatched values size for " + NumberUtils.POWERS_OF_TWO, Long.SIZE, GenericUtils.size(NumberUtils.POWERS_OF_TWO));
- long expected = 1L;
- for (int index = 0; index < Long.SIZE; index++, expected <<= 1) {
- Long actual = NumberUtils.POWERS_OF_TWO.get(index);
- assertEquals("Mismatched value at index=" + index, Long.toHexString(expected), Long.toHexString(actual));
- }
- }
-
- @Test
- public void testNextPowerOf2() {
- for (Long v : NumberUtils.POWERS_OF_TWO) {
- long expected = v;
- if (expected > 2L) {
- assertEquals("Mismatched lower bound value", expected, NumberUtils.getNextPowerOf2(expected - 1L));
- }
-
- if (expected > 0L) { // avoid the negative value
- assertEquals("Mismatched exact value", expected, NumberUtils.getNextPowerOf2(expected));
- }
- }
- }
-
- @Test
- public void testToInteger() {
- assertNull("Unexpected null value", NumberUtils.toInteger(null));
- for (Number n : new Number[]{
- Byte.valueOf(Byte.MAX_VALUE), Short.valueOf(Short.MIN_VALUE),
- Integer.valueOf(Short.MAX_VALUE), Long.valueOf(82007160L)}) {
- Integer i = NumberUtils.toInteger(n);
- if (n instanceof Integer) {
- assertSame("Unexpected conversion", n, i);
- } else {
- assertEquals("Mismatched values", n.intValue(), i.intValue());
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/OsUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/OsUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/OsUtilsTest.java
deleted file mode 100644
index 62081af..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/OsUtilsTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util;
-
-import java.util.Objects;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class OsUtilsTest extends BaseTestSupport {
- public OsUtilsTest() {
- super();
- }
-
- @Test
- public void testSetOsTypeByProperty() {
- try {
- for (String osType : new String[]{"Some-Windows", "Some-Linux"}) {
- OsUtils.setWin32(null); // force re-detection
-
- try {
- boolean expected = osType.contains("Windows");
- System.setProperty(OsUtils.OS_TYPE_OVERRIDE_PROP, osType);
- boolean actual = OsUtils.isWin32();
- assertEquals(osType, expected, actual);
- } finally {
- System.clearProperty(OsUtils.OS_TYPE_OVERRIDE_PROP);
- }
- }
- } finally {
- OsUtils.setWin32(null); // force re-detection
- }
- }
-
- @Test
- public void testSetOsTypeProgrammatically() {
- try {
- for (boolean expected : new boolean[]{true, false}) {
- OsUtils.setWin32(expected); // force value
- assertEquals("Mismatched detection value", expected, OsUtils.isWin32());
- }
- } finally {
- OsUtils.setWin32(null); // force re-detection
- }
- }
-
- @Test
- public void testSetCurrentUserByProperty() {
- try {
- for (String expected : new String[]{getClass().getSimpleName(), getCurrentTestName()}) {
- OsUtils.setCurrentUser(null); // force re-detection
-
- try {
- System.setProperty(OsUtils.CURRENT_USER_OVERRIDE_PROP, expected);
- String actual = OsUtils.getCurrentUser();
- assertEquals("Mismatched reported current user", expected, actual);
- } finally {
- System.clearProperty(OsUtils.CURRENT_USER_OVERRIDE_PROP);
- }
- }
- } finally {
- OsUtils.setCurrentUser(null); // force re-detection
- }
- }
-
- @Test
- public void testSetCurrentUserProgrammatically() {
- try {
- for (String expected : new String[]{getClass().getSimpleName(), getCurrentTestName()}) {
- OsUtils.setCurrentUser(expected); // force value
- assertEquals("Mismatched detection value", expected, OsUtils.getCurrentUser());
- }
- } finally {
- OsUtils.setCurrentUser(null); // force re-detection
- }
- }
-
- @Test
- public void testSetJavaVersionByProperty() {
- try {
- for (String value : new String[]{"7.3.6_5", "37.77.34_7-" + getCurrentTestName()}) {
- OsUtils.setJavaVersion(null); // force re-detection
-
- try {
- System.setProperty(OsUtils.JAVA_VERSION_OVERRIDE_PROP, value);
- String expected = value.replace('_', '.');
- String actual = Objects.toString(OsUtils.getJavaVersion(), null);
- assertTrue("Mismatched reported version value: " + actual, expected.startsWith(actual));
- } finally {
- System.clearProperty(OsUtils.JAVA_VERSION_OVERRIDE_PROP);
- }
- }
- } finally {
- OsUtils.setJavaVersion(null); // force re-detection
- }
- }
-
- @Test
- public void testSetJavaVersionProgrammatically() {
- try {
- for (VersionInfo expected : new VersionInfo[]{VersionInfo.parse("7.3.6.5"), VersionInfo.parse("37.77.34.7")}) {
- OsUtils.setJavaVersion(expected); // force value
- assertEquals("Mismatched detection value", expected, OsUtils.getJavaVersion());
- }
- } finally {
- OsUtils.setJavaVersion(null); // force re-detection
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/SecurityUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/SecurityUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/SecurityUtilsTest.java
deleted file mode 100644
index c4e521c..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/SecurityUtilsTest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util;
-
-import java.io.IOException;
-import java.nio.file.Path;
-import java.security.GeneralSecurityException;
-import java.security.KeyPair;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.security.interfaces.DSAPrivateKey;
-import java.security.interfaces.DSAPublicKey;
-import java.security.interfaces.ECPrivateKey;
-import java.security.interfaces.ECPublicKey;
-import java.security.interfaces.RSAPrivateKey;
-import java.security.interfaces.RSAPublicKey;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.sshd.common.cipher.BuiltinCiphers;
-import org.apache.sshd.common.cipher.ECCurves;
-import org.apache.sshd.common.config.keys.FilePasswordProvider;
-import org.apache.sshd.common.config.keys.KeyUtils;
-import org.apache.sshd.common.config.keys.loader.KeyPairResourceLoader;
-import org.apache.sshd.common.keyprovider.AbstractResourceKeyPairProvider;
-import org.apache.sshd.common.keyprovider.ClassLoadableResourceKeyPairProvider;
-import org.apache.sshd.common.keyprovider.FileKeyPairProvider;
-import org.apache.sshd.common.util.security.SecurityProviderRegistrar;
-import org.apache.sshd.common.util.security.SecurityUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.AfterClass;
-import org.junit.Assume;
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-@SuppressWarnings("checkstyle:MethodCount")
-public class SecurityUtilsTest extends BaseTestSupport {
- public static final String BC_NAMED_USAGE_PROP =
- SecurityProviderRegistrar.CONFIG_PROP_BASE
- + "." + SecurityUtils.BOUNCY_CASTLE
- + "." + SecurityProviderRegistrar.NAMED_PROVIDER_PROPERTY;
-
- private static final String DEFAULT_PASSWORD = "super secret passphrase";
- private static final FilePasswordProvider TEST_PASSWORD_PROVIDER = file -> DEFAULT_PASSWORD;
-
- public SecurityUtilsTest() {
- super();
- }
-
- // NOTE: Using the BouncyCastle provider instead of the name does not work as expected so we take no chances
- @BeforeClass
- public static void useNamedBouncyCastleProvider() {
- System.setProperty(BC_NAMED_USAGE_PROP, Boolean.TRUE.toString());
- }
-
- @AfterClass
- public static void unsetBouncyCastleProviderUsagePreference() {
- System.clearProperty(BC_NAMED_USAGE_PROP);
- }
-
- @Test
- public void testLoadEncryptedDESPrivateKey() throws Exception {
- testLoadEncryptedRSAPrivateKey("DES-EDE3");
- }
-
- @Test
- public void testLoadEncryptedAESPrivateKey() {
- for (BuiltinCiphers c : new BuiltinCiphers[]{
- BuiltinCiphers.aes128cbc, BuiltinCiphers.aes192cbc, BuiltinCiphers.aes256cbc
- }) {
- if (!c.isSupported()) {
- System.out.println("Skip unsupported encryption scheme: " + c.getName());
- continue;
- }
-
- try {
- testLoadEncryptedRSAPrivateKey("AES-" + c.getKeySize());
- } catch (Exception e) {
- fail("Failed (" + e.getClass().getSimpleName() + " to load key for " + c.getName() + ": " + e.getMessage());
- }
- }
- }
-
- private KeyPair testLoadEncryptedRSAPrivateKey(String algorithm) throws IOException, GeneralSecurityException {
- return testLoadRSAPrivateKey(DEFAULT_PASSWORD.replace(' ', '-') + "-RSA-" + algorithm.toUpperCase() + "-key");
- }
-
- @Test
- public void testLoadUnencryptedRSAPrivateKey() throws Exception {
- testLoadRSAPrivateKey(getClass().getSimpleName() + "-RSA-KeyPair");
- }
-
- @Test
- public void testLoadUnencryptedDSSPrivateKey() throws Exception {
- testLoadDSSPrivateKey(getClass().getSimpleName() + "-DSA-KeyPair");
- }
-
- private KeyPair testLoadDSSPrivateKey(String name) throws Exception {
- return testLoadPrivateKey(name, DSAPublicKey.class, DSAPrivateKey.class);
- }
-
- @Test
- public void testLoadUnencryptedECPrivateKey() throws Exception {
- Assume.assumeTrue("EC not supported", SecurityUtils.isECCSupported());
- for (ECCurves c : ECCurves.VALUES) {
- if (!c.isSupported()) {
- System.out.println("Skip unsupported curve: " + c.getName());
- continue;
- }
-
- testLoadECPrivateKey(getClass().getSimpleName() + "-EC-" + c.getKeySize() + "-KeyPair");
- }
- }
-
- private KeyPair testLoadECPrivateKey(String name) throws IOException, GeneralSecurityException {
- return testLoadPrivateKey(name, ECPublicKey.class, ECPrivateKey.class);
- }
-
- private KeyPair testLoadRSAPrivateKey(String name) throws IOException, GeneralSecurityException {
- return testLoadPrivateKey(name, RSAPublicKey.class, RSAPrivateKey.class);
- }
-
- private KeyPair testLoadPrivateKey(String name, Class<? extends PublicKey> pubType, Class<? extends PrivateKey> prvType)
- throws IOException, GeneralSecurityException {
- Path folder = getTestResourcesFolder();
- Path file = folder.resolve(name);
- KeyPair kpFile = testLoadPrivateKeyFile(file, pubType, prvType);
- if (SecurityUtils.isBouncyCastleRegistered()) {
- KeyPairResourceLoader bcLoader = SecurityUtils.getBouncycastleKeyPairResourceParser();
- Collection<KeyPair> kpList = bcLoader.loadKeyPairs(file, TEST_PASSWORD_PROVIDER);
- assertEquals(name + ": Mismatched loaded BouncyCastle keys count", 1, GenericUtils.size(kpList));
-
- KeyPair kpBC = kpList.iterator().next();
- assertTrue(name + ": Mismatched BouncyCastle vs. file values", KeyUtils.compareKeyPairs(kpFile, kpBC));
- }
-
- Class<?> clazz = getClass();
- Package pkg = clazz.getPackage();
- KeyPair kpResource = testLoadPrivateKeyResource(pkg.getName().replace('.', '/') + "/" + name, pubType, prvType);
- assertTrue(name + ": Mismatched key file vs. resource values", KeyUtils.compareKeyPairs(kpFile, kpResource));
- return kpResource;
- }
-
- private static KeyPair testLoadPrivateKeyResource(String name, Class<? extends PublicKey> pubType, Class<? extends PrivateKey> prvType) {
- return testLoadPrivateKey(name, new ClassLoadableResourceKeyPairProvider(name), pubType, prvType);
- }
-
- private static KeyPair testLoadPrivateKeyFile(Path file, Class<? extends PublicKey> pubType, Class<? extends PrivateKey> prvType) {
- return testLoadPrivateKey(file.toString(), new FileKeyPairProvider(file), pubType, prvType);
- }
-
- private static KeyPair testLoadPrivateKey(String resourceKey, AbstractResourceKeyPairProvider<?> provider,
- Class<? extends PublicKey> pubType, Class<? extends PrivateKey> prvType) {
- provider.setPasswordFinder(TEST_PASSWORD_PROVIDER);
- Iterable<KeyPair> iterator = provider.loadKeys();
- List<KeyPair> pairs = new ArrayList<>();
- for (KeyPair kp : iterator) {
- pairs.add(kp);
- }
-
- assertEquals("Mismatched loaded pairs count for " + resourceKey, 1, pairs.size());
-
- KeyPair kp = pairs.get(0);
- PublicKey pub = kp.getPublic();
- assertNotNull("No public key extracted", pub);
- assertTrue("Not an " + pubType.getSimpleName() + " public key for " + resourceKey, pubType.isAssignableFrom(pub.getClass()));
-
- PrivateKey prv = kp.getPrivate();
- assertNotNull("No private key extracted", prv);
- assertTrue("Not an " + prvType.getSimpleName() + " private key for " + resourceKey, prvType.isAssignableFrom(prv.getClass()));
-
- return kp;
- }
-
- @Test
- public void testSetMaxDHGroupExchangeKeySizeByProperty() {
- try {
- for (int expected = SecurityUtils.MIN_DHGEX_KEY_SIZE; expected <= SecurityUtils.MAX_DHGEX_KEY_SIZE; expected += 1024) {
- SecurityUtils.setMaxDHGroupExchangeKeySize(0); // force detection
- try {
- System.setProperty(SecurityUtils.MAX_DHGEX_KEY_SIZE_PROP, Integer.toString(expected));
- assertTrue("DH group not supported for key size=" + expected, SecurityUtils.isDHGroupExchangeSupported());
- assertEquals("Mismatched values", expected, SecurityUtils.getMaxDHGroupExchangeKeySize());
- } finally {
- System.clearProperty(SecurityUtils.MAX_DHGEX_KEY_SIZE_PROP);
- }
- }
- } finally {
- SecurityUtils.setMaxDHGroupExchangeKeySize(0); // force detection
- }
- }
-
- @Test
- public void testSetMaxDHGroupExchangeKeySizeProgrammatically() {
- try {
- for (int expected = SecurityUtils.MIN_DHGEX_KEY_SIZE; expected <= SecurityUtils.MAX_DHGEX_KEY_SIZE; expected += 1024) {
- SecurityUtils.setMaxDHGroupExchangeKeySize(expected);
- assertTrue("DH group not supported for key size=" + expected, SecurityUtils.isDHGroupExchangeSupported());
- assertEquals("Mismatched values", expected, SecurityUtils.getMaxDHGroupExchangeKeySize());
- }
- } finally {
- SecurityUtils.setMaxDHGroupExchangeKeySize(0); // force detection
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/SelectorUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/SelectorUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/SelectorUtilsTest.java
deleted file mode 100644
index e13fa9b..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/SelectorUtilsTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util;
-
-import java.io.File;
-import java.util.Random;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.Assume;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class SelectorUtilsTest extends BaseTestSupport {
- public SelectorUtilsTest() {
- super();
- }
-
- @Test
- public void testApplyLinuxSeparatorSlashifyRules() {
- testApplySlashifyRules('/');
- }
-
- @Test
- public void testApplyWindowsSeparatorSlashifyRules() {
- testApplySlashifyRules('\\');
- }
-
- private void testApplySlashifyRules(char slash) {
- for (String expected : new String[]{
- null, "", getCurrentTestName(),
- getClass().getSimpleName() + Character.toString(slash) + getCurrentTestName(),
- Character.toString(slash) + getClass().getSimpleName(),
- Character.toString(slash) + getClass().getSimpleName() + Character.toString(slash) + getCurrentTestName()
- }) {
- String actual = SelectorUtils.applySlashifyRules(expected, slash);
- assertSame("Mismatched results for '" + expected + "'", expected, actual);
- }
-
- String[] comps = {getClass().getSimpleName(), getCurrentTestName()};
- Random rnd = new Random(System.nanoTime());
- StringBuilder sb = new StringBuilder(Byte.MAX_VALUE);
- for (int index = 0; index < Long.SIZE; index++) {
- if (sb.length() > 0) {
- sb.setLength(0); // start from scratch
- }
-
- boolean prepend = rnd.nextBoolean();
- if (prepend) {
- slashify(sb, rnd, slash);
- }
-
- sb.append(comps[0]);
- for (int j = 1; j < comps.length; j++) {
- slashify(sb, rnd, slash);
- sb.append(comps[j]);
- }
-
- boolean append = rnd.nextBoolean();
- if (append) {
- slashify(sb, rnd, slash);
- }
-
- String path = sb.toString();
- sb.setLength(0);
- if (prepend) {
- sb.append(slash);
- }
-
- sb.append(comps[0]);
- for (int j = 1; j < comps.length; j++) {
- sb.append(slash).append(comps[j]);
- }
-
- if (append) {
- sb.append(slash).append('.');
- }
-
- String expected = sb.toString();
- String actual = SelectorUtils.applySlashifyRules(path, slash);
- assertEquals("Mismatched results for path=" + path, expected, actual);
- }
- }
-
- private static int slashify(StringBuilder sb, Random rnd, char slash) {
- int slashes = 1 /* at least one slash */ + rnd.nextInt(Byte.SIZE);
- for (int k = 0; k < slashes; k++) {
- sb.append(slash);
- }
-
- return slashes;
- }
-
- @Test
- public void testTranslateToFileSystemPath() {
- String path = getClass().getPackage().getName().replace('.', File.separatorChar)
- + File.separator + getClass().getSimpleName()
- + File.separator + getCurrentTestName();
- for (String expected : new String[] {null, "", path}) {
- String actual = SelectorUtils.translateToFileSystemPath(expected, File.separator, File.separator);
- assertSame("Mismatched instance for translated result", expected, actual);
- }
-
- for (String fsSeparator : new String[] {String.valueOf('.'), "##"}) {
- String expected = path.replace(File.separator, fsSeparator);
- String actual = SelectorUtils.translateToFileSystemPath(path, File.separator, fsSeparator);
- assertEquals("Mismatched translation result for separator='" + fsSeparator + "'", expected, actual);
-
- actual = SelectorUtils.translateToFileSystemPath(actual, fsSeparator, File.separator);
- assertEquals("Mismatched translation revert for separator='" + fsSeparator + "'", path, actual);
- }
- }
-
- @Test
- public void testAbsoluteWindowsPathTranslation() {
- Assume.assumeTrue("Not tested on Windows", OsUtils.isWin32());
- String expected = detectTargetFolder().toString();
- for (String prefix : new String[]{"", "/"}) {
- String actual = SelectorUtils.translateToLocalPath(prefix + expected.replace('/', File.separatorChar));
- assertEquals("Mismatched result for prefix='" + prefix + "'", expected, actual);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/ThreadUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/ThreadUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/ThreadUtilsTest.java
deleted file mode 100644
index 50fda34..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/ThreadUtilsTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util;
-
-import java.util.Collection;
-
-import org.apache.sshd.common.util.threads.CloseableExecutorService;
-import org.apache.sshd.common.util.threads.ThreadUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class ThreadUtilsTest extends BaseTestSupport {
- public ThreadUtilsTest() {
- super();
- }
-
- @Test
- public void testProtectExecutorServiceShutdown() {
- for (boolean shutdownOnExit : new boolean[]{true, false}) {
- assertNull("Unexpected instance for shutdown=" + shutdownOnExit, ThreadUtils.protectExecutorServiceShutdown(null, shutdownOnExit));
- }
-
- CloseableExecutorService service = ThreadUtils.newSingleThreadExecutor("pool");
- try {
- assertSame("Unexpected wrapped instance", service, ThreadUtils.protectExecutorServiceShutdown(service, true));
-
- CloseableExecutorService wrapped = ThreadUtils.protectExecutorServiceShutdown(service, false);
- try {
- assertNotSame("No wrapping occurred", service, wrapped);
-
- wrapped.shutdown();
- assertTrue("Wrapped service not shutdown", wrapped.isShutdown());
- assertFalse("Protected service is shutdown", service.isShutdown());
-
- Collection<?> running = wrapped.shutdownNow();
- assertTrue("Non-empty runners list", running.isEmpty());
- assertTrue("Wrapped service not shutdownNow", wrapped.isShutdown());
- assertFalse("Protected service is shutdownNow", service.isShutdown());
- } finally {
- wrapped.shutdownNow(); // just in case
- }
- } finally {
- service.shutdownNow(); // just in case...
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/ValidateUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/ValidateUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/ValidateUtilsTest.java
deleted file mode 100644
index 80c2e7f..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/ValidateUtilsTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class ValidateUtilsTest extends BaseTestSupport {
- public ValidateUtilsTest() {
- super();
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void checkNotNull() {
- ValidateUtils.checkNotNull(getClass(), getCurrentTestName());
- ValidateUtils.checkNotNull(null, getCurrentTestName());
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/VersionInfoTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/VersionInfoTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/VersionInfoTest.java
deleted file mode 100644
index 3b742a9..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/VersionInfoTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class VersionInfoTest extends BaseTestSupport {
- public VersionInfoTest() {
- super();
- }
-
- @Test
- public void testLessThan4Components() {
- VersionInfo expected = new VersionInfo(73, 65);
- VersionInfo actual = VersionInfo.parse(NumberUtils.join('.', expected.getMajorVersion(), expected.getMinorVersion()));
- assertEquals("Mismatched result", expected, actual);
- }
-
- @Test
- public void testMoreThan4Components() {
- VersionInfo expected = new VersionInfo(7, 3, 6, 5);
- VersionInfo actual = VersionInfo.parse(expected.toString() + ".3.7.7.7.3.4.7");
- assertEquals("Mismatched result", expected, actual);
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/buffer/BufferTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/buffer/BufferTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/buffer/BufferTest.java
deleted file mode 100644
index be3f796..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/buffer/BufferTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util.buffer;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.nio.charset.StandardCharsets;
-
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class BufferTest extends BaseTestSupport {
- public BufferTest() {
- super();
- }
-
- @Test
- public void testGetLong() throws Exception {
- long expected = 1234567890123456789L;
-
- try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
- try (DataOutputStream ds = new DataOutputStream(stream)) {
- ds.writeLong(expected);
- }
-
- Buffer buffer = new ByteArrayBuffer(stream.toByteArray());
- assertEquals("Mismatched recovered value", expected, buffer.getLong());
- }
- }
-
- @Test
- public void testPutCharsWithNullOrEmptyValue() {
- Buffer buffer = new ByteArrayBuffer(Integer.SIZE);
- for (char[] chars : new char[][]{null, GenericUtils.EMPTY_CHAR_ARRAY}) {
- buffer.putChars(chars);
-
- String value = buffer.getString();
- assertEquals("Mismatched value for " + ((chars == null) ? "null" : "empty") + " characters", "", value);
- }
- }
-
- @Test
- public void testPutCharsOnNonEmptyValue() {
- String expected = getCurrentTestName();
- Buffer buffer = new ByteArrayBuffer(expected.length() + Byte.SIZE);
- buffer.putChars(expected.toCharArray());
-
- String actual = buffer.getString();
- assertEquals("Mismatched recovered values", expected, actual);
- }
-
- @Test
- public void testPutAndWipeChars() {
- String expected = getCurrentTestName();
- char[] chars = expected.toCharArray();
- Buffer buffer = new ByteArrayBuffer(chars.length + Byte.SIZE);
- buffer.putAndWipeChars(chars);
-
- String actual = buffer.getString();
- assertEquals("Mismatched recovered values", expected, actual);
-
- for (int index = 0; index < chars.length; index++) {
- assertEquals("Character not wiped at index=" + index, 0, chars[index]);
- }
- }
-
- @Test
- public void testPutAndWipeBytes() {
- String expected = getCurrentTestName();
- byte[] bytes = expected.getBytes(StandardCharsets.UTF_8);
- Buffer buffer = new ByteArrayBuffer(bytes.length + Byte.SIZE);
- buffer.putAndWipeBytes(bytes);
- String actual = buffer.getString();
- assertEquals("Mismatched recovered values", expected, actual);
-
- for (int index = 0; index < bytes.length; index++) {
- assertEquals("Value not wiped at index=" + index, 0, bytes[index]);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/buffer/BufferUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/buffer/BufferUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/buffer/BufferUtilsTest.java
deleted file mode 100644
index b106bc6..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/buffer/BufferUtilsTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util.buffer;
-
-import java.nio.charset.StandardCharsets;
-import java.util.Random;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class BufferUtilsTest extends BaseTestSupport {
- public BufferUtilsTest() {
- super();
- }
-
- @Test
- public void testHexEncodeDecode() {
- String expValue = getClass().getName() + "#" + getCurrentTestName();
- byte[] expData = expValue.getBytes(StandardCharsets.UTF_8);
- for (char sep : new char[]{BufferUtils.EMPTY_HEX_SEPARATOR, ':'}) {
- String hexData = BufferUtils.toHex(sep, expData);
- byte[] actData = BufferUtils.decodeHex(sep, hexData);
- String actValue = new String(actData, StandardCharsets.UTF_8);
- String sepName = (BufferUtils.EMPTY_HEX_SEPARATOR == sep) ? "EMPTY" : Character.toString(sep);
- outputDebugMessage("Decode(sep=%s) expected=%s, actual=%s", sepName, expValue, actValue);
- assertArrayEquals("Mismatched result for sep='" + sepName + "'", expData, actData);
- }
- }
-
- @Test
- public void testGetCompactClone() {
- byte[] expected = getCurrentTestName().getBytes(StandardCharsets.UTF_8);
- final int testOffset = Byte.SIZE / 2;
- byte[] data = new byte[expected.length + 2 * testOffset];
- Random rnd = new Random(System.nanoTime());
- rnd.nextBytes(data);
- System.arraycopy(expected, 0, data, testOffset, expected.length);
-
- Buffer buf = ByteArrayBuffer.getCompactClone(data, testOffset, expected.length);
- assertEquals("Mismatched cloned buffer read position", 0, buf.rpos());
- assertEquals("Mismatched cloned buffer available size", expected.length, buf.available());
-
- byte[] actual = buf.array();
- assertNotSame("Original data not cloned", data, actual);
- assertArrayEquals("Mismatched cloned contents", expected, actual);
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/closeable/CloseableUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/closeable/CloseableUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/closeable/CloseableUtilsTest.java
deleted file mode 100644
index 8a6cb18..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/closeable/CloseableUtilsTest.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util.closeable;
-
-import java.io.IOException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.sshd.common.Closeable;
-import org.apache.sshd.common.future.CloseFuture;
-import org.apache.sshd.common.future.DefaultCloseFuture;
-import org.apache.sshd.common.future.SshFutureListener;
-import org.apache.sshd.common.util.threads.ThreadUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class CloseableUtilsTest extends BaseTestSupport {
- public CloseableUtilsTest() {
- super();
- }
-
- @Test
- public void testCloseImmediateNotCalledIfAlreadyClosed() throws IOException {
- Closeable closeable = new IoBaseCloseable() {
- @Override
- public CloseFuture close(boolean immediately) {
- fail("Unexpected call to close(" + immediately + ")");
- return null;
- }
-
- @Override
- public void addCloseFutureListener(SshFutureListener<CloseFuture> listener) {
- fail("Unexpected call to addCloseFutureListener");
- }
-
- @Override
- public void removeCloseFutureListener(SshFutureListener<CloseFuture> listener) {
- fail("Unexpected call to removeCloseFutureListener");
- }
-
- @Override
- public boolean isClosed() {
- return true;
- }
-
- @Override
- public boolean isClosing() {
- return false;
- }
- };
- closeable.close();
- }
-
- @Test
- public void testCloseImmediateNotCalledIfIsClosing() throws IOException {
- Closeable closeable = new IoBaseCloseable() {
- @Override
- public CloseFuture close(boolean immediately) {
- fail("Unexpected call to close(" + immediately + ")");
- return null;
- }
-
- @Override
- public void addCloseFutureListener(SshFutureListener<CloseFuture> listener) {
- fail("Unexpected call to addCloseFutureListener");
- }
-
- @Override
- public void removeCloseFutureListener(SshFutureListener<CloseFuture> listener) {
- fail("Unexpected call to removeCloseFutureListener");
- }
-
- @Override
- public boolean isClosed() {
- return false;
- }
-
- @Override
- public boolean isClosing() {
- return true;
- }
- };
- closeable.close();
- }
-
- @Test
- public void testCloseImmediateCalledAndWait() throws Exception {
- DefaultCloseFuture future = new DefaultCloseFuture(this, this);
- AtomicInteger callsCount = new AtomicInteger(0);
- Closeable closeable = new IoBaseCloseable() {
- @Override
- public CloseFuture close(boolean immediately) {
- assertTrue("Closure is not immediate", immediately);
- assertEquals("Multiple close immediate calls", 1, callsCount.incrementAndGet());
- return future;
- }
-
- @Override
- public void addCloseFutureListener(SshFutureListener<CloseFuture> listener) {
- fail("Unexpected call to addCloseFutureListener");
- }
-
- @Override
- public void removeCloseFutureListener(SshFutureListener<CloseFuture> listener) {
- fail("Unexpected call to removeCloseFutureListener");
- }
-
- @Override
- public boolean isClosed() {
- return false;
- }
-
- @Override
- public boolean isClosing() {
- return false;
- }
- };
-
- ExecutorService service = ThreadUtils.newSingleThreadExecutor(getCurrentTestName());
- try {
- Future<?> task = service.submit((Runnable) () -> {
- try {
- closeable.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- });
- future.setClosed(); // signal close complete
- task.get(5L, TimeUnit.SECONDS); // make sure #await call terminated
- assertEquals("Close immediate not called", 1, callsCount.get());
- } finally {
- service.shutdownNow();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/io/EmptyInputStreamTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/io/EmptyInputStreamTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/io/EmptyInputStreamTest.java
deleted file mode 100644
index 24f18e3..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/io/EmptyInputStreamTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util.io;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.sshd.common.util.buffer.BufferUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class EmptyInputStreamTest extends BaseTestSupport {
- public EmptyInputStreamTest() {
- super();
- }
-
- @Test
- public void testEmptyInputStream() throws IOException {
- try (EmptyInputStream in = new EmptyInputStream()) {
- testEmptyInputStream(in, false);
- }
- }
-
- @Test
- public void testCloseableEmptyInputStream() throws IOException {
- try (EmptyInputStream in = new CloseableEmptyInputStream()) {
- testEmptyInputStream(in, true);
- }
- }
-
- private void testEmptyInputStream(InputStream in, boolean failAfterClose) throws IOException {
- testEmptyInputStream("open", in, false);
- in.close();
- testEmptyInputStream("closed", in, failAfterClose);
- }
-
- private void testEmptyInputStream(String message, InputStream in, boolean errorExpected) {
- assertFalse(message + ": unexpected markSupported()", in.markSupported());
- try {
- in.mark(Long.SIZE);
- fail(message + ": unexpected mark success");
- } catch (UnsupportedOperationException e) {
- // expected
- }
-
- try {
- int len = in.available();
- assertFalse(message + ": Unexpected success in available(): " + len, errorExpected);
- assertEquals(message + ": Mismatched available() result", 0, len);
- } catch (IOException e) {
- assertTrue(message + ": Unexpected error on available(): " + e.getMessage(), errorExpected);
- }
-
- try {
- int data = in.read();
- assertFalse(message + ": Unexpected success in read(): " + data, errorExpected);
- assertEquals(message + ": Mismatched read() result", -1, data);
- } catch (IOException e) {
- assertTrue(message + ": Unexpected error on read(): " + e.getMessage(), errorExpected);
- }
-
- byte[] bytes = new byte[Byte.SIZE];
- try {
- int len = in.read(bytes);
- assertFalse(message + ": Unexpected success in read([]): " + BufferUtils.toHex(':', bytes), errorExpected);
- assertEquals(message + ": Mismatched read([]) result", -1, len);
- } catch (IOException e) {
- assertTrue(message + ": Unexpected error on read([]): " + e.getMessage(), errorExpected);
- }
-
- try {
- int len = in.read(bytes, 0, bytes.length);
- assertFalse(message + ": Unexpected success in read([],int,int): " + BufferUtils.toHex(':', bytes), errorExpected);
- assertEquals(message + ": Mismatched read([],int,int) result", -1, len);
- } catch (IOException e) {
- assertTrue(message + ": Unexpected error on read([],int,int): " + e.getMessage(), errorExpected);
- }
-
- try {
- long len = in.skip(Byte.MAX_VALUE);
- assertFalse(message + ": Unexpected success in skip(): " + len, errorExpected);
- assertEquals(message + ": Mismatched skip() result", 0L, len);
- } catch (IOException e) {
- assertTrue(message + ": Unexpected error on skip(): " + e.getMessage(), errorExpected);
- }
-
- try {
- in.reset();
- assertFalse(message + ": Unexpected success in reset()", errorExpected);
- } catch (IOException e) {
- assertTrue(message + ": Unexpected error on reset(): " + e.getMessage(), errorExpected);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/io/IoUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/io/IoUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/io/IoUtilsTest.java
deleted file mode 100644
index 6d7a8fa..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/io/IoUtilsTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util.io;
-
-import java.nio.file.LinkOption;
-
-import org.apache.sshd.common.util.NumberUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class IoUtilsTest extends BaseTestSupport {
- public IoUtilsTest() {
- super();
- }
-
- @Test
- public void testFollowLinks() {
- assertTrue("Null ?", IoUtils.followLinks((LinkOption[]) null));
- assertTrue("Empty ?", IoUtils.followLinks(IoUtils.EMPTY_LINK_OPTIONS));
- assertFalse("No-follow ?", IoUtils.followLinks(IoUtils.getLinkOptions(false)));
- }
-
- @Test
- public void testGetEOLBytes() {
- byte[] expected = IoUtils.getEOLBytes();
- assertTrue("Empty bytes", NumberUtils.length(expected) > 0);
-
- for (int index = 1; index < Byte.SIZE; index++) {
- byte[] actual = IoUtils.getEOLBytes();
- assertNotSame("Same bytes received at iteration " + index, expected, actual);
- assertArrayEquals("Mismatched bytes at iteration " + index, expected, actual);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/io/LimitInputStreamTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/io/LimitInputStreamTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/io/LimitInputStreamTest.java
deleted file mode 100644
index 0f179b8..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/io/LimitInputStreamTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util.io;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class LimitInputStreamTest extends BaseTestSupport {
- public LimitInputStreamTest() {
- super();
- }
-
- @Test
- public void testReadLimit() throws IOException {
- Path targetPath = detectTargetFolder();
- Path rootFolder = assertHierarchyTargetFolderExists(targetPath.resolve(getClass().getSimpleName()));
- Path inputFile = rootFolder.resolve(getCurrentTestName() + ".bin");
- byte[] data = (getClass().getName() + "#" + getCurrentTestName()).getBytes(StandardCharsets.UTF_8);
- Files.write(inputFile, data);
-
- try (InputStream in = Files.newInputStream(inputFile)) {
- int maxLen = data.length / 2;
- byte[] expected = new byte[maxLen];
- System.arraycopy(data, 0, expected, 0, expected.length);
-
- byte[] actual = new byte[expected.length];
- try (LimitInputStream limited = new LimitInputStream(in, expected.length)) {
- assertTrue("Limited stream not marked as open", limited.isOpen());
- assertEquals("Mismatched initial available data size", expected.length, limited.available());
-
- int readLen = limited.read(actual);
- assertEquals("Incomplete actual data read", actual.length, readLen);
- assertArrayEquals("Mismatched read data", expected, actual);
- assertEquals("Mismatched remaining available data size", 0, limited.available());
-
- readLen = limited.read();
- assertTrue("Unexpected success to read one more byte: " + readLen, readLen < 0);
-
- readLen = limited.read(actual);
- assertTrue("Unexpected success to read extra buffer: " + readLen, readLen < 0);
-
- limited.close();
- assertFalse("Limited stream still marked as open", limited.isOpen());
-
- try {
- readLen = limited.read();
- fail("Unexpected one byte read success after close");
- } catch (IOException e) {
- // expected
- }
-
- try {
- readLen = limited.read(actual);
- fail("Unexpected buffer read success after close: " + readLen);
- } catch (IOException e) {
- // expected
- }
-
- try {
- readLen = limited.read(actual);
- fail("Unexpected buffer read success after close: " + readLen);
- } catch (IOException e) {
- // expected
- }
-
- try {
- readLen = (int) limited.skip(Byte.SIZE);
- fail("Unexpected skip success after close: " + readLen);
- } catch (IOException e) {
- // expected
- }
-
- try {
- readLen = limited.available();
- fail("Unexpected available success after close: " + readLen);
- } catch (IOException e) {
- // expected
- }
- }
-
- // make sure underlying stream not closed
- int readLen = in.read(actual);
- assertEquals("Incomplete extra data read", Math.min(actual.length, data.length - expected.length), readLen);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/io/ModifiableFileWatcherTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/io/ModifiableFileWatcherTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/io/ModifiableFileWatcherTest.java
deleted file mode 100644
index 70c548b..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/io/ModifiableFileWatcherTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util.io;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.attribute.PosixFilePermission;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.common.util.OsUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class ModifiableFileWatcherTest extends BaseTestSupport {
- public ModifiableFileWatcherTest() {
- super();
- }
-
- @Test // see SSHD-606
- public void testValidateStrictConfigFilePermissions() throws IOException {
- Path file = getTempTargetRelativeFile(getClass().getSimpleName(), getCurrentTestName());
- outputDebugMessage("%s deletion result=%s", file, Files.deleteIfExists(file));
- assertNull("Unexpected violation for non-existent file: " + file, ModifiableFileWatcher.validateStrictConfigFilePermissions(file));
-
- assertHierarchyTargetFolderExists(file.getParent());
- try (OutputStream output = Files.newOutputStream(file)) {
- output.write((getClass().getName() + "#" + getCurrentTestName() + "@" + new Date(System.currentTimeMillis())).getBytes(StandardCharsets.UTF_8));
- }
-
- Collection<PosixFilePermission> perms = IoUtils.getPermissions(file);
- if (GenericUtils.isEmpty(perms)) {
- assertNull("Unexpected violation for no permissions file: " + file, ModifiableFileWatcher.validateStrictConfigFilePermissions(file));
- } else if (OsUtils.isUNIX()) {
- Map.Entry<String, Object> violation = null;
- for (PosixFilePermission p : ModifiableFileWatcher.STRICTLY_PROHIBITED_FILE_PERMISSION) {
- if (perms.contains(p)) {
- violation = ModifiableFileWatcher.validateStrictConfigFilePermissions(file);
- assertNotNull("Unexpected success for permission=" + p + " of file " + file + " permissions=" + perms, violation);
- break;
- }
- }
-
- if (violation == null) { // we do not expected a failure if no permissions have been violated
- assertNull("Unexpected UNIX violation for file " + file + " permissions=" + perms, ModifiableFileWatcher.validateStrictConfigFilePermissions(file));
- }
- } else {
- assertNull("Unexpected Windows violation for file " + file + " permissions=" + perms, ModifiableFileWatcher.validateStrictConfigFilePermissions(file));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/io/NoCloseInputStreamTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/io/NoCloseInputStreamTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/io/NoCloseInputStreamTest.java
deleted file mode 100644
index 2990fa6..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/io/NoCloseInputStreamTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util.io;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Date;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class NoCloseInputStreamTest extends BaseTestSupport {
- public NoCloseInputStreamTest() {
- super();
- }
-
- @Test
- public void testCanKeepReadingAfterClose() throws IOException {
- byte[] expected = (getClass().getName() + "#" + getCurrentTestName() + "@" + new Date()).getBytes(StandardCharsets.UTF_8);
- Path dir = createTempClassFolder();
- Path file = Files.write(dir.resolve(getCurrentTestName() + ".txt"), expected);
- try (InputStream fileStream = Files.newInputStream(file);
- InputStream shielded = new NoCloseInputStream(fileStream)) {
- int index = 0;
-
- for (; index < (expected.length / 2); index++) {
- shielded.close();
-
- int readValue = shielded.read();
- if (readValue == -1) {
- fail("Premature EOF after shield read of " + index + " bytes");
- }
-
- byte expValue = expected[index];
- byte actValue = (byte) (readValue & 0xFF);
- if (expValue != actValue) {
- fail("Mismatched shielded read value after " + index + " bytes");
- }
- }
-
- for (; index < expected.length; index++) {
- int readValue = fileStream.read();
- if (readValue == -1) {
- fail("Premature EOF after original read of " + index + " bytes");
- }
- byte expValue = expected[index];
- byte actValue = (byte) (readValue & 0xFF);
- if (expValue != actValue) {
- fail("Mismatched original read value after " + index + " bytes");
- }
- }
-
- int readValue = shielded.read();
- assertEquals("Shielded EOF not signalled", -1, readValue);
-
- readValue = fileStream.read();
- assertEquals("Original EOF not signalled", -1, readValue);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/util/io/NoCloseOutputStreamTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/io/NoCloseOutputStreamTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/io/NoCloseOutputStreamTest.java
deleted file mode 100644
index fc211c3..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/io/NoCloseOutputStreamTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sshd.common.util.io;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Date;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class NoCloseOutputStreamTest extends BaseTestSupport {
- public NoCloseOutputStreamTest() {
- super();
- }
-
- @Test
- public void testCanKeepWritingAfterClose() throws IOException {
- Path dir = createTempClassFolder();
- Path file = dir.resolve(getCurrentTestName() + ".txt");
- Files.deleteIfExists(file);
-
- String expectedOutput = getClass().getName() + "#" + getCurrentTestName() + "@" + new Date();
- byte[] expected = expectedOutput.getBytes(StandardCharsets.UTF_8);
- try (OutputStream fileStream = Files.newOutputStream(file);
- OutputStream shielded = new NoCloseOutputStream(fileStream)) {
- int index = 0;
- for (; index < (expected.length / 2); index++) {
- shielded.close();
- shielded.write(expected[index] & 0xFF);
- }
-
- fileStream.write(expected, index, expected.length - index);
- }
-
- byte[] actual = Files.readAllBytes(file);
- String actualOutput = new String(actual, StandardCharsets.UTF_8);
- assertEquals(expectedOutput, actualOutput);
- }
-}