You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/02/06 14:19:43 UTC
[logging-log4j2] 01/02: Add missing tests from Log4j 1.2.17.
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 4015f5b384f243aabf3dc6567e202b53b68e28b0
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Feb 6 08:49:47 2022 -0500
Add missing tests from Log4j 1.2.17.
---
.../apache/log4j/helpers/BoundedFIFOTestCase.java | 233 +++++++++++++++++++++
.../apache/log4j/helpers/CyclicBufferTestCase.java | 159 ++++++++++++++
.../java/org/apache/log4j/helpers/LogLogTest.java | 52 +++++
3 files changed, 444 insertions(+)
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/BoundedFIFOTestCase.java b/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/BoundedFIFOTestCase.java
new file mode 100644
index 0000000..c5ff717
--- /dev/null
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/BoundedFIFOTestCase.java
@@ -0,0 +1,233 @@
+/*
+ * 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.log4j.helpers;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.spi.LoggingEvent;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Test {@link BoundedFIFO}.
+ *
+ * @since 0.9.1
+ */
+public class BoundedFIFOTestCase extends TestCase {
+ static Logger cat = Logger.getLogger("x");
+
+ static int MAX = 1000;
+
+ static LoggingEvent[] e = new LoggingEvent[MAX];
+
+ public static Test suite() {
+ final TestSuite suite = new TestSuite();
+ suite.addTest(new BoundedFIFOTestCase("test1"));
+ suite.addTest(new BoundedFIFOTestCase("test2"));
+ suite.addTest(new BoundedFIFOTestCase("testResize1"));
+ suite.addTest(new BoundedFIFOTestCase("testResize2"));
+ suite.addTest(new BoundedFIFOTestCase("testResize3"));
+ return suite;
+ }
+
+ {
+ for (int i = 0; i < MAX; i++) {
+ e[i] = new LoggingEvent("", cat, Level.DEBUG, "e" + i, null);
+ }
+ }
+
+ public BoundedFIFOTestCase(final String name) {
+ super(name);
+ }
+
+ int min(final int a, final int b) {
+ return a < b ? a : b;
+ }
+
+ @Override
+ public void setUp() {
+
+ }
+
+ /**
+ * Pattern: +++++..-----..
+ */
+ public void test1() {
+ for (int size = 1; size <= 128; size *= 2) {
+ final BoundedFIFO bf = new BoundedFIFO(size);
+
+ assertEquals(bf.getMaxSize(), size);
+ assertNull(bf.get());
+
+ int i;
+ int j;
+ int k;
+
+ for (i = 1; i < 2 * size; i++) {
+ for (j = 0; j < i; j++) {
+ // System.out.println("Putting "+e[j]);
+ bf.put(e[j]);
+ assertEquals(bf.length(), j < size ? j + 1 : size);
+ }
+ final int max = size < j ? size : j;
+ j--;
+ for (k = 0; k <= j; k++) {
+ // System.out.println("max="+max+", j="+j+", k="+k);
+ assertEquals(bf.length(), max - k > 0 ? max - k : 0);
+ final Object r = bf.get();
+ // System.out.println("Got "+r);
+ if (k >= size) {
+ assertNull(r);
+ } else {
+ assertEquals(r, e[k]);
+ }
+ }
+ }
+ // System.out.println("Passed size="+size);
+ }
+ }
+
+ /**
+ * Pattern: ++++--++--++
+ */
+ public void test2() {
+ final int size = 3;
+ final BoundedFIFO bf = new BoundedFIFO(size);
+
+ bf.put(e[0]);
+ assertEquals(bf.get(), e[0]);
+ assertNull(bf.get());
+
+ bf.put(e[1]);
+ assertEquals(bf.length(), 1);
+ bf.put(e[2]);
+ assertEquals(bf.length(), 2);
+ bf.put(e[3]);
+ assertEquals(bf.length(), 3);
+ assertEquals(bf.get(), e[1]);
+ assertEquals(bf.length(), 2);
+ assertEquals(bf.get(), e[2]);
+ assertEquals(bf.length(), 1);
+ assertEquals(bf.get(), e[3]);
+ assertEquals(bf.length(), 0);
+ assertNull(bf.get());
+ assertEquals(bf.length(), 0);
+ }
+
+ /**
+ * Pattern ++++++++++++++++++++ (insert only);
+ */
+ public void testResize1() {
+ final int size = 10;
+
+ for (int n = 1; n < size * 2; n++) {
+ for (int i = 0; i < size * 2; i++) {
+
+ final BoundedFIFO bf = new BoundedFIFO(size);
+ for (int f = 0; f < i; f++) {
+ bf.put(e[f]);
+ }
+
+ bf.resize(n);
+ final int expectedSize = min(n, min(i, size));
+ assertEquals(bf.length(), expectedSize);
+ for (int c = 0; c < expectedSize; c++) {
+ assertEquals(bf.get(), e[c]);
+ }
+ }
+ }
+ }
+
+ /**
+ * Pattern ++...+ --...-
+ */
+ public void testResize2() {
+ final int size = 10;
+
+ for (int n = 1; n < size * 2; n++) {
+ for (int i = 0; i < size * 2; i++) {
+ for (int d = 0; d < min(i, size); d++) {
+
+ final BoundedFIFO bf = new BoundedFIFO(size);
+ for (int p = 0; p < i; p++) {
+ bf.put(e[p]);
+ }
+
+ for (int g = 0; g < d; g++) {
+ bf.get();
+ }
+
+ // x = the number of elems in
+ final int x = bf.length();
+
+ bf.resize(n);
+
+ final int expectedSize = min(n, x);
+ assertEquals(bf.length(), expectedSize);
+
+ for (int c = 0; c < expectedSize; c++) {
+ assertEquals(bf.get(), e[c + d]);
+ }
+ assertNull(bf.get());
+ }
+ }
+ }
+ }
+
+ /**
+ * Pattern: i inserts, d deletes, r inserts
+ */
+ public void testResize3() {
+ final int size = 10;
+
+ for (int n = 1; n < size * 2; n++) {
+ for (int i = 0; i < size; i++) {
+ for (int d = 0; d < i; d++) {
+ for (int r = 0; r < d; r++) {
+
+ final BoundedFIFO bf = new BoundedFIFO(size);
+ for (int p0 = 0; p0 < i; p0++) {
+ bf.put(e[p0]);
+ }
+
+ for (int g = 0; g < d; g++) {
+ bf.get();
+ }
+ for (int p1 = 0; p1 < r; p1++) {
+ bf.put(e[i + p1]);
+ }
+
+ final int x = bf.length();
+
+ bf.resize(n);
+
+ final int expectedSize = min(n, x);
+ assertEquals(bf.length(), expectedSize);
+
+ for (int c = 0; c < expectedSize; c++) {
+ assertEquals(bf.get(), e[c + d]);
+ }
+ // assertNull(bf.get());
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/CyclicBufferTestCase.java b/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/CyclicBufferTestCase.java
new file mode 100644
index 0000000..bb294d1
--- /dev/null
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/CyclicBufferTestCase.java
@@ -0,0 +1,159 @@
+/*
+ * 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.
+ */
+
+//
+// Log4j uses the JUnit framework for internal unit testing. JUnit
+// available from
+//
+// http://www.junit.org
+
+package org.apache.log4j.helpers;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.spi.LoggingEvent;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Tests {@link CyclicBuffer}.
+ */
+public class CyclicBufferTestCase extends TestCase {
+
+ static Logger cat = Logger.getLogger("x");
+
+ static int MAX = 1000;
+
+ static LoggingEvent[] e = new LoggingEvent[MAX];
+
+ public static Test suite() {
+ final TestSuite suite = new TestSuite();
+ suite.addTest(new CyclicBufferTestCase("test0"));
+ suite.addTest(new CyclicBufferTestCase("test1"));
+ suite.addTest(new CyclicBufferTestCase("testResize"));
+ return suite;
+ }
+
+ {
+ for (int i = 0; i < MAX; i++) {
+ e[i] = new LoggingEvent("", cat, Level.DEBUG, "e" + i, null);
+ }
+ }
+
+ public CyclicBufferTestCase(final String name) {
+ super(name);
+ }
+
+ void doTest1(final int size) {
+ // System.out.println("Doing test with size = "+size);
+ final CyclicBuffer cb = new CyclicBuffer(size);
+
+ assertEquals(cb.getMaxSize(), size);
+
+ for (int i = -(size + 10); i < (size + 10); i++) {
+ assertNull(cb.get(i));
+ }
+
+ for (int i = 0; i < MAX; i++) {
+ cb.add(e[i]);
+ final int limit = i < size - 1 ? i : size - 1;
+
+ // System.out.println("\nLimit is " + limit + ", i="+i);
+
+ for (int j = limit; j >= 0; j--) {
+ // System.out.println("i= "+i+", j="+j);
+ assertEquals(cb.get(j), e[i - (limit - j)]);
+ }
+ assertNull(cb.get(-1));
+ assertNull(cb.get(limit + 1));
+ }
+ }
+
+ void doTestResize(final int initialSize, final int numberOfAdds, final int newSize) {
+ // System.out.println("initialSize = "+initialSize+", numberOfAdds="
+ // +numberOfAdds+", newSize="+newSize);
+ final CyclicBuffer cb = new CyclicBuffer(initialSize);
+ for (int i = 0; i < numberOfAdds; i++) {
+ cb.add(e[i]);
+ }
+ cb.resize(newSize);
+
+ int offset = numberOfAdds - initialSize;
+ if (offset < 0) {
+ offset = 0;
+ }
+
+ int len = newSize < numberOfAdds ? newSize : numberOfAdds;
+ len = len < initialSize ? len : initialSize;
+ // System.out.println("Len = "+len+", offset="+offset);
+ for (int j = 0; j < len; j++) {
+ assertEquals(cb.get(j), e[offset + j]);
+ }
+
+ }
+
+ @Override
+ public void setUp() {
+
+ }
+
+ public void test0() {
+ final int size = 2;
+
+ CyclicBuffer cb = new CyclicBuffer(size);
+ assertEquals(cb.getMaxSize(), size);
+
+ cb.add(e[0]);
+ assertEquals(cb.length(), 1);
+ assertEquals(cb.get(), e[0]);
+ assertEquals(cb.length(), 0);
+ assertNull(cb.get());
+ assertEquals(cb.length(), 0);
+
+ cb = new CyclicBuffer(size);
+ cb.add(e[0]);
+ cb.add(e[1]);
+ assertEquals(cb.length(), 2);
+ assertEquals(cb.get(), e[0]);
+ assertEquals(cb.length(), 1);
+ assertEquals(cb.get(), e[1]);
+ assertEquals(cb.length(), 0);
+ assertNull(cb.get());
+ assertEquals(cb.length(), 0);
+
+ }
+
+ /**
+ * Test a buffer of size 1,2,4,8,..,128
+ */
+ public void test1() {
+ for (int bufSize = 1; bufSize <= 128; bufSize *= 2) {
+ doTest1(bufSize);
+ }
+ }
+
+ public void testResize() {
+ for (int isize = 1; isize <= 128; isize *= 2) {
+ doTestResize(isize, isize / 2 + 1, isize / 2 + 1);
+ doTestResize(isize, isize / 2 + 1, isize + 10);
+ doTestResize(isize, isize + 10, isize / 2 + 1);
+ doTestResize(isize, isize + 10, isize + 10);
+ }
+ }
+}
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/LogLogTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/LogLogTest.java
new file mode 100644
index 0000000..5341e1d
--- /dev/null
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/LogLogTest.java
@@ -0,0 +1,52 @@
+/*
+ * 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.log4j.helpers;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@link LogLog}.
+ */
+public class LogLogTest extends TestCase {
+
+ /**
+ * Create new instance of LogLogTest.
+ *
+ * @param testName test name
+ */
+ public LogLogTest(final String testName) {
+ super(testName);
+ }
+
+ /**
+ * Check value of CONFIG_DEBUG_KEY.
+ *
+ * @deprecated since constant is deprecated
+ */
+ @Deprecated
+ public void testConfigDebugKey() {
+ assertEquals("log4j.configDebug", LogLog.CONFIG_DEBUG_KEY);
+ }
+
+ /**
+ * Check value of DEBUG_KEY.
+ */
+ public void testDebugKey() {
+ assertEquals("log4j.debug", LogLog.DEBUG_KEY);
+ }
+}