Run| Workspace| Log| Issues| Fixes| Pre-reqs| Stats| XRef| Maven Repository Proxy Log Gump Logo

Details

File Contents

Testsuite: org.apache.coyote.http11.upgrade.TestUpgrade
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.552 sec
------------- Standard Error -----------------
05-Aug-2020 22:45:07.405 INFO [main] org.apache.catalina.startup.LoggingBaseTest.setUp Starting test case [testMessagesBlocking]
05-Aug-2020 22:45:08.338 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio2-127.0.0.1-auto-1"]
05-Aug-2020 22:45:08.401 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Tomcat]
05-Aug-2020 22:45:08.402 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.0-M8-dev]
05-Aug-2020 22:45:08.773 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-127.0.0.1-auto-1-44937"]
05-Aug-2020 22:45:09.479 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio2-127.0.0.1-auto-1-44937"]
05-Aug-2020 22:45:09.481 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Tomcat]
05-Aug-2020 22:45:09.515 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio2-127.0.0.1-auto-1-44937"]
05-Aug-2020 22:45:09.517 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio2-127.0.0.1-auto-1-44937"]
05-Aug-2020 22:45:09.557 INFO [main] org.apache.catalina.startup.LoggingBaseTest.setUp Starting test case [testSimpleUpgradeBlocking]
05-Aug-2020 22:45:09.561 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio2-127.0.0.1-auto-2"]
05-Aug-2020 22:45:09.591 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Tomcat]
05-Aug-2020 22:45:09.592 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.0-M8-dev]
05-Aug-2020 22:45:09.603 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-127.0.0.1-auto-2-38715"]
05-Aug-2020 22:45:09.608 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio2-127.0.0.1-auto-2-38715"]
05-Aug-2020 22:45:09.614 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Tomcat]
05-Aug-2020 22:45:09.618 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio2-127.0.0.1-auto-2-38715"]
05-Aug-2020 22:45:09.618 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio2-127.0.0.1-auto-2-38715"]
05-Aug-2020 22:45:09.625 INFO [main] org.apache.catalina.startup.LoggingBaseTest.setUp Starting test case [testMessagesNonBlocking]
05-Aug-2020 22:45:09.629 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio2-127.0.0.1-auto-3"]
05-Aug-2020 22:45:09.643 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Tomcat]
05-Aug-2020 22:45:09.644 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.0-M8-dev]
05-Aug-2020 22:45:09.670 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-127.0.0.1-auto-3-40531"]
05-Aug-2020 22:45:10.180 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio2-127.0.0.1-auto-3-40531"]
05-Aug-2020 22:45:10.187 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Tomcat]
05-Aug-2020 22:45:10.190 WARNING [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [Thread-6] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:748)
05-Aug-2020 22:45:10.192 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio2-127.0.0.1-auto-3-40531"]
05-Aug-2020 22:45:10.192 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio2-127.0.0.1-auto-3-40531"]
05-Aug-2020 22:45:10.200 INFO [main] org.apache.catalina.startup.LoggingBaseTest.setUp Starting test case [testSetWriteListenerTwice]
05-Aug-2020 22:45:10.204 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio2-127.0.0.1-auto-4"]
05-Aug-2020 22:45:10.212 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Tomcat]
05-Aug-2020 22:45:10.212 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.0-M8-dev]
05-Aug-2020 22:45:10.225 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-127.0.0.1-auto-4-44523"]
05-Aug-2020 22:45:10.235 SEVERE [http-nio2-127.0.0.1-auto-4-exec-2] org.apache.coyote.AbstractProtocol$ConnectionHandler.process Error reading request, ignored
	java.lang.IllegalArgumentException: It is illegal to call setWriteListener() more than once for the same upgraded connection
		at org.apache.coyote.http11.upgrade.UpgradeServletOutputStream.setWriteListener(UpgradeServletOutputStream.java:110)
		at org.apache.coyote.http11.upgrade.TestUpgrade$SetWriteListenerTwice.init(TestUpgrade.java:439)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
		at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1624)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
		at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1075)
		at org.apache.tomcat.util.net.Nio2Endpoint.setSocketOptions(Nio2Endpoint.java:323)
		at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:424)
		at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:379)
		at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
		at sun.nio.ch.Invoker$2.run(Invoker.java:218)
		at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
		at java.lang.Thread.run(Thread.java:748)
05-Aug-2020 22:45:10.238 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio2-127.0.0.1-auto-4-44523"]
05-Aug-2020 22:45:10.244 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Tomcat]
05-Aug-2020 22:45:10.247 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio2-127.0.0.1-auto-4-44523"]
05-Aug-2020 22:45:10.248 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio2-127.0.0.1-auto-4-44523"]
05-Aug-2020 22:45:10.254 INFO [main] org.apache.catalina.startup.LoggingBaseTest.setUp Starting test case [testFirstCallToOnWritePossible]
05-Aug-2020 22:45:10.257 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio2-127.0.0.1-auto-5"]
05-Aug-2020 22:45:10.265 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Tomcat]
05-Aug-2020 22:45:10.266 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.0-M8-dev]
05-Aug-2020 22:45:10.274 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-127.0.0.1-auto-5-33435"]
05-Aug-2020 22:45:10.281 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio2-127.0.0.1-auto-5-33435"]
05-Aug-2020 22:45:10.287 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Tomcat]
05-Aug-2020 22:45:10.290 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio2-127.0.0.1-auto-5-33435"]
05-Aug-2020 22:45:10.291 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio2-127.0.0.1-auto-5-33435"]
05-Aug-2020 22:45:10.301 INFO [main] org.apache.catalina.startup.LoggingBaseTest.setUp Starting test case [testSetNullReadListener]
05-Aug-2020 22:45:10.305 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio2-127.0.0.1-auto-6"]
05-Aug-2020 22:45:10.315 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Tomcat]
05-Aug-2020 22:45:10.316 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.0-M8-dev]
05-Aug-2020 22:45:10.332 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-127.0.0.1-auto-6-38515"]
05-Aug-2020 22:45:10.340 SEVERE [http-nio2-127.0.0.1-auto-6-exec-4] org.apache.coyote.AbstractProtocol$ConnectionHandler.process Error reading request, ignored
	java.lang.IllegalArgumentException: It is illegal to pass null to setReadListener()
		at org.apache.coyote.http11.upgrade.UpgradeServletInputStream.setReadListener(UpgradeServletInputStream.java:94)
		at org.apache.coyote.http11.upgrade.TestUpgrade$SetNullReadListener.init(TestUpgrade.java:369)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
		at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1624)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
		at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1075)
		at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:586)
		at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:564)
		at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
		at sun.nio.ch.Invoker$2.run(Invoker.java:218)
		at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
		at java.lang.Thread.run(Thread.java:748)
05-Aug-2020 22:45:10.343 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio2-127.0.0.1-auto-6-38515"]
05-Aug-2020 22:45:10.349 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Tomcat]
05-Aug-2020 22:45:10.353 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio2-127.0.0.1-auto-6-38515"]
05-Aug-2020 22:45:10.354 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio2-127.0.0.1-auto-6-38515"]
05-Aug-2020 22:45:10.363 INFO [main] org.apache.catalina.startup.LoggingBaseTest.setUp Starting test case [testSetNullWriteListener]
05-Aug-2020 22:45:10.370 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio2-127.0.0.1-auto-7"]
05-Aug-2020 22:45:10.383 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Tomcat]
05-Aug-2020 22:45:10.384 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.0-M8-dev]
05-Aug-2020 22:45:10.399 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-127.0.0.1-auto-7-42999"]
05-Aug-2020 22:45:10.409 SEVERE [http-nio2-127.0.0.1-auto-7-exec-4] org.apache.coyote.AbstractProtocol$ConnectionHandler.process Error reading request, ignored
	java.lang.IllegalArgumentException: It is illegal to pass null to setWriteListener()
		at org.apache.coyote.http11.upgrade.UpgradeServletOutputStream.setWriteListener(UpgradeServletOutputStream.java:106)
		at org.apache.coyote.http11.upgrade.TestUpgrade$SetNullWriteListener.init(TestUpgrade.java:389)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
		at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1624)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
		at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1075)
		at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:586)
		at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:564)
		at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
		at sun.nio.ch.Invoker$2.run(Invoker.java:218)
		at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
		at java.lang.Thread.run(Thread.java:748)
05-Aug-2020 22:45:10.410 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio2-127.0.0.1-auto-7-42999"]
05-Aug-2020 22:45:10.412 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Tomcat]
05-Aug-2020 22:45:10.419 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio2-127.0.0.1-auto-7-42999"]
05-Aug-2020 22:45:10.420 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio2-127.0.0.1-auto-7-42999"]
05-Aug-2020 22:45:10.428 INFO [main] org.apache.catalina.startup.LoggingBaseTest.setUp Starting test case [testSimpleUpgradeNonBlocking]
05-Aug-2020 22:45:10.430 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio2-127.0.0.1-auto-8"]
05-Aug-2020 22:45:10.435 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Tomcat]
05-Aug-2020 22:45:10.435 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.0-M8-dev]
05-Aug-2020 22:45:10.447 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-127.0.0.1-auto-8-43975"]
05-Aug-2020 22:45:10.452 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio2-127.0.0.1-auto-8-43975"]
05-Aug-2020 22:45:10.457 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Tomcat]
05-Aug-2020 22:45:10.460 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio2-127.0.0.1-auto-8-43975"]
05-Aug-2020 22:45:10.461 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio2-127.0.0.1-auto-8-43975"]
05-Aug-2020 22:45:10.466 INFO [main] org.apache.catalina.startup.LoggingBaseTest.setUp Starting test case [testSetReadListenerTwice]
05-Aug-2020 22:45:10.470 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio2-127.0.0.1-auto-9"]
05-Aug-2020 22:45:10.479 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Tomcat]
05-Aug-2020 22:45:10.479 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.0-M8-dev]
05-Aug-2020 22:45:10.492 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-127.0.0.1-auto-9-37327"]
05-Aug-2020 22:45:10.504 SEVERE [http-nio2-127.0.0.1-auto-9-exec-2] org.apache.coyote.AbstractProtocol$ConnectionHandler.process Error reading request, ignored
	java.lang.IllegalArgumentException: It is illegal to call setReadListener() more than once for the same upgraded connection
		at org.apache.coyote.http11.upgrade.UpgradeServletInputStream.setReadListener(UpgradeServletInputStream.java:98)
		at org.apache.coyote.http11.upgrade.TestUpgrade$SetReadListenerTwice.init(TestUpgrade.java:414)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
		at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1624)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
		at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1075)
		at org.apache.tomcat.util.net.Nio2Endpoint.setSocketOptions(Nio2Endpoint.java:323)
		at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:424)
		at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:379)
		at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
		at sun.nio.ch.Invoker$2.run(Invoker.java:218)
		at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
		at java.lang.Thread.run(Thread.java:748)
05-Aug-2020 22:45:10.505 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio2-127.0.0.1-auto-9-37327"]
05-Aug-2020 22:45:10.511 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Tomcat]
05-Aug-2020 22:45:10.515 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio2-127.0.0.1-auto-9-37327"]
05-Aug-2020 22:45:10.515 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio2-127.0.0.1-auto-9-37327"]
------------- ---------------- ---------------

Testcase: testMessagesBlocking took 2.461 sec
Testcase: testSimpleUpgradeBlocking took 0.067 sec
Testcase: testMessagesNonBlocking took 0.575 sec
Testcase: testSetWriteListenerTwice took 0.053 sec
Testcase: testFirstCallToOnWritePossible took 0.047 sec
Testcase: testSetNullReadListener took 0.061 sec
Testcase: testSetNullWriteListener took 0.065 sec
Testcase: testSimpleUpgradeNonBlocking took 0.038 sec
Testcase: testSetReadListenerTwice took 0.059 sec

Apache Gump, Gump, Apache, the Apache feather logo, and the Apache Gump project logos are trademarks of The Apache Software Foundation.

Last Updated: Wed, 05 Aug 2020 12:00:05 ().Python Logo