Test duration : 501.367s
Failed Tests | ||
---|---|---|
tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout | ||
testMessageDeliveryReliabilityChatWithoutResumptionAndWithoutFullJid | 451.328s |
2022-06-17 22:32:04 |
java.lang.AssertionError: Message was not delivered!
2022-06-17 22:32:04 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:32:04 | ------------------------------------ 2022-06-17 22:32:04 | [Mutex] waiting for: [message:f90ac0a1-fd37-4155-bc4e-3ae56043b013] 2022-06-17 22:32:04 | [Mutex] waiting for: [message:f90ac0a1-fd37-4155-bc4e-3ae56043b013] 2022-06-17 22:32:04 | [Mutex] received everything. 2022-06-17 22:32:04 | ===== simulation of connection failure 2022-06-17 22:32:04 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:32:04 | ===== sending message to look for 2022-06-17 22:32:05 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:32:05 | ===== broadcasting presence 2022-06-17 22:32:05 | [Mutex] waiting for: [message:daa0e722-3359-4278-ae99-a390f25e4194] 2022-06-17 22:32:05 | [Mutex] waiting for: [message:daa0e722-3359-4278-ae99-a390f25e4194] 2022-06-17 22:39:35 | [Mutex] timeout. Not received [message:daa0e722-3359-4278-ae99-a390f25e4194] 2022-06-17 22:39:35 | [Mutex] isItemNotified: message:daa0e722-3359-4278-ae99-a390f25e4194 :: false
org.testng.AssertJUnit.fail(AssertJUnit.java:65)
org.testng.AssertJUnit.assertTrue(AssertJUnit.java:23) tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout.testMessageDeliveryReliability(TestOfflineMessageDeliveryAfterSmResumptionTimeout.java:264) tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout.testMessageDeliveryReliabilityChatWithoutResumptionAndWithoutFullJid(TestOfflineMessageDeliveryAfterSmResumptionTimeout.java:141) java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.base/java.lang.reflect.Method.invoke(Method.java:568) org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:135) org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:673) org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:220) org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:945) org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:193) org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) java.base/java.util.ArrayList.forEach(ArrayList.java:1511) org.testng.TestRunner.privateRun(TestRunner.java:808) org.testng.TestRunner.run(TestRunner.java:603) org.testng.SuiteRunner.runTest(SuiteRunner.java:429) org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) org.testng.SuiteRunner.run(SuiteRunner.java:326) org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) org.testng.TestNG.runSuitesLocally(TestNG.java:1169) org.testng.TestNG.runSuites(TestNG.java:1092) org.testng.TestNG.run(TestNG.java:1060) org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:283) org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:75) org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:120) org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384) org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345) org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126) org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418) |
Passed Tests | ||
---|---|---|
tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout | ||
testMessageDeliveryReliabilityChatWithResumptionAndWithFullJid | 1.308s |
2022-06-17 22:31:45 |
2022-06-17 22:31:45 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:31:45 | ------------------------------------ 2022-06-17 22:31:45 | [Mutex] waiting for: [message:292062ee-15df-4d92-9b68-878c5eeecb8d] 2022-06-17 22:31:45 | [Mutex] received everything. 2022-06-17 22:31:45 | ===== simulation of connection failure 2022-06-17 22:31:45 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:31:45 | ===== sending message to look for 2022-06-17 22:31:46 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:31:46 | ===== broadcasting presence 2022-06-17 22:31:46 | [Mutex] received everything. 2022-06-17 22:31:46 | [Mutex] isItemNotified: message:af4f284e-c717-488a-852d-a936f12cc7d3 :: true |
testMessageDeliveryReliabilityChatWithResumptionAndWithFullJidAndDelay | 3.298s |
2022-06-17 22:31:47 |
2022-06-17 22:31:47 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:31:47 | ------------------------------------ 2022-06-17 22:31:47 | [Mutex] waiting for: [message:47a4a198-78ab-4e9d-b8fa-0d7a56d5aa19] 2022-06-17 22:31:47 | [Mutex] waiting for: [message:47a4a198-78ab-4e9d-b8fa-0d7a56d5aa19] 2022-06-17 22:31:47 | [Mutex] received everything. 2022-06-17 22:31:47 | ===== simulation of connection failure 2022-06-17 22:31:47 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:31:47 | ===== sending message to look for 2022-06-17 22:31:48 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:31:50 | ===== broadcasting presence 2022-06-17 22:31:50 | [Mutex] received everything. 2022-06-17 22:31:50 | [Mutex] isItemNotified: message:2036f79f-cb39-4ad3-991e-df930cc2a8d2 :: true |
testMessageDeliveryReliabilityChatWithResumptionAndWithoutFullJid | 1.318s |
2022-06-17 22:31:51 |
2022-06-17 22:31:51 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:31:51 | ------------------------------------ 2022-06-17 22:31:51 | [Mutex] waiting for: [message:a5c75852-c028-4824-b91a-ae505ca906ef] 2022-06-17 22:31:51 | [Mutex] received everything. 2022-06-17 22:31:51 | ===== simulation of connection failure 2022-06-17 22:31:51 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:31:51 | ===== sending message to look for 2022-06-17 22:31:52 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:31:53 | ===== broadcasting presence 2022-06-17 22:31:53 | [Mutex] received everything. 2022-06-17 22:31:53 | [Mutex] isItemNotified: message:31ee3e41-f617-48dc-8e2a-ce1e6a4728a8 :: true |
testMessageDeliveryReliabilityChatWithResumptionAndWithoutFullJidAndDelay | 3.300s |
2022-06-17 22:31:53 |
2022-06-17 22:31:53 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:31:53 | ------------------------------------ 2022-06-17 22:31:53 | [Mutex] waiting for: [message:5b089485-2e6f-48d9-9a6c-51cb465a2e49] 2022-06-17 22:31:53 | [Mutex] waiting for: [message:5b089485-2e6f-48d9-9a6c-51cb465a2e49] 2022-06-17 22:31:53 | [Mutex] received everything. 2022-06-17 22:31:53 | ===== simulation of connection failure 2022-06-17 22:31:53 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:31:54 | ===== sending message to look for 2022-06-17 22:31:55 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:31:57 | ===== broadcasting presence 2022-06-17 22:31:57 | [Mutex] received everything. 2022-06-17 22:31:57 | [Mutex] isItemNotified: message:95ab4ab9-32c8-4cb1-b014-e6fdf36eb357 :: true |
testMessageDeliveryReliabilityChatWithoutResumptionAndWithFullJid | 1.312s |
2022-06-17 22:31:58 |
2022-06-17 22:31:58 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:31:58 | ------------------------------------ 2022-06-17 22:31:58 | [Mutex] waiting for: [message:9cd3368d-25a1-4018-ac3a-f7857f7d2199] 2022-06-17 22:31:58 | [Mutex] received everything. 2022-06-17 22:31:58 | ===== simulation of connection failure 2022-06-17 22:31:58 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:31:58 | ===== sending message to look for 2022-06-17 22:31:59 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:31:59 | ===== broadcasting presence 2022-06-17 22:31:59 | [Mutex] waiting for: [message:ace928b9-7752-425b-bf74-b2080b0e0403] 2022-06-17 22:31:59 | [Mutex] received everything. 2022-06-17 22:31:59 | [Mutex] isItemNotified: message:ace928b9-7752-425b-bf74-b2080b0e0403 :: true |
testMessageDeliveryReliabilityChatWithoutResumptionAndWithFullJidAndDelay | 3.319s |
2022-06-17 22:32:00 |
2022-06-17 22:32:00 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:32:00 | ------------------------------------ 2022-06-17 22:32:00 | [Mutex] waiting for: [message:1bb49773-8d4e-4825-8209-de9ac16094fe] 2022-06-17 22:32:00 | [Mutex] waiting for: [message:1bb49773-8d4e-4825-8209-de9ac16094fe] 2022-06-17 22:32:00 | [Mutex] received everything. 2022-06-17 22:32:00 | ===== simulation of connection failure 2022-06-17 22:32:00 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:32:00 | ===== sending message to look for 2022-06-17 22:32:01 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:32:03 | ===== broadcasting presence 2022-06-17 22:32:03 | [Mutex] received everything. 2022-06-17 22:32:03 | [Mutex] isItemNotified: message:489055a2-9461-45fc-aa17-827621814cfd :: true |
testMessageDeliveryReliabilityChatWithoutResumptionAndWithoutFullJidAndDelay | 3.328s |
2022-06-17 22:39:36 |
2022-06-17 22:39:36 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:39:36 | ------------------------------------ 2022-06-17 22:39:36 | [Mutex] waiting for: [message:c205c67b-b6fe-4596-a1cd-8082c431040d] 2022-06-17 22:39:36 | [Mutex] received everything. 2022-06-17 22:39:36 | ===== simulation of connection failure 2022-06-17 22:39:36 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:39:36 | ===== sending message to look for 2022-06-17 22:39:37 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:39:40 | ===== broadcasting presence 2022-06-17 22:39:40 | [Mutex] waiting for: [message:cf148f90-97df-4abf-aec4-f8f18c874d6b] 2022-06-17 22:39:40 | [Mutex] waiting for: [message:cf148f90-97df-4abf-aec4-f8f18c874d6b] 2022-06-17 22:39:40 | [Mutex] waiting for: [message:cf148f90-97df-4abf-aec4-f8f18c874d6b] 2022-06-17 22:39:40 | [Mutex] received everything. 2022-06-17 22:39:40 | [Mutex] isItemNotified: message:cf148f90-97df-4abf-aec4-f8f18c874d6b :: true |
testMessageDeliveryReliabilityWithResumptionAndWithFullJid | 1.307s |
2022-06-17 22:39:40 |
2022-06-17 22:39:40 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:39:40 | ------------------------------------ 2022-06-17 22:39:40 | [Mutex] waiting for: [message:823792b8-8182-47bd-be74-2d39115d9f17] 2022-06-17 22:39:40 | [Mutex] waiting for: [message:823792b8-8182-47bd-be74-2d39115d9f17] 2022-06-17 22:39:40 | [Mutex] received everything. 2022-06-17 22:39:40 | ===== simulation of connection failure 2022-06-17 22:39:40 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:39:41 | ===== sending message to look for 2022-06-17 22:39:42 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:39:42 | ===== broadcasting presence 2022-06-17 22:39:42 | [Mutex] received everything. 2022-06-17 22:39:42 | [Mutex] isItemNotified: message:d4f71004-1dc4-4a85-8691-3574810f43bb :: true |
testMessageDeliveryReliabilityWithResumptionAndWithFullJidAndDelay | 3.334s |
2022-06-17 22:39:43 |
2022-06-17 22:39:43 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:39:43 | ------------------------------------ 2022-06-17 22:39:43 | [Mutex] waiting for: [message:699bb67c-40ce-48ff-97d5-b57f05e70ccd] 2022-06-17 22:39:43 | [Mutex] waiting for: [message:699bb67c-40ce-48ff-97d5-b57f05e70ccd] 2022-06-17 22:39:43 | [Mutex] received everything. 2022-06-17 22:39:43 | ===== simulation of connection failure 2022-06-17 22:39:43 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:39:43 | ===== sending message to look for 2022-06-17 22:39:44 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:39:46 | ===== broadcasting presence 2022-06-17 22:39:46 | [Mutex] received everything. 2022-06-17 22:39:46 | [Mutex] isItemNotified: message:222ea48f-ecb3-4b51-a057-e74c22a88d0b :: true |
testMessageDeliveryReliabilityWithResumptionAndWithoutFullJid | 1.306s |
2022-06-17 22:39:47 |
2022-06-17 22:39:47 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:39:47 | ------------------------------------ 2022-06-17 22:39:47 | [Mutex] waiting for: [message:239a8582-8b46-49c0-ad55-5dde5d13dd9b] 2022-06-17 22:39:47 | [Mutex] received everything. 2022-06-17 22:39:47 | ===== simulation of connection failure 2022-06-17 22:39:47 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:39:47 | ===== sending message to look for 2022-06-17 22:39:48 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:39:48 | ===== broadcasting presence 2022-06-17 22:39:48 | [Mutex] received everything. 2022-06-17 22:39:48 | [Mutex] isItemNotified: message:496f0faa-e791-4d90-a922-2a0c6c3fa891 :: true |
testMessageDeliveryReliabilityWithResumptionAndWithoutFullJidAndDelay | 3.311s |
2022-06-17 22:39:49 |
2022-06-17 22:39:49 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:39:49 | ------------------------------------ 2022-06-17 22:39:49 | [Mutex] waiting for: [message:b2904db1-f8f3-4e42-b512-ee3d50e5e932] 2022-06-17 22:39:49 | [Mutex] received everything. 2022-06-17 22:39:49 | ===== simulation of connection failure 2022-06-17 22:39:49 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:39:49 | ===== sending message to look for 2022-06-17 22:39:50 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:39:52 | ===== broadcasting presence 2022-06-17 22:39:52 | [Mutex] received everything. 2022-06-17 22:39:52 | [Mutex] isItemNotified: message:774864b6-20d0-4c63-8d9a-add7bae923f9 :: true |
testMessageDeliveryReliabilityWithoutResumptionAndWithFullJid | 1.335s |
2022-06-17 22:39:53 |
2022-06-17 22:39:53 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:39:53 | ------------------------------------ 2022-06-17 22:39:53 | [Mutex] waiting for: [message:a9f8b562-f028-4223-ae38-fdc15cf7437a] 2022-06-17 22:39:53 | [Mutex] received everything. 2022-06-17 22:39:53 | ===== simulation of connection failure 2022-06-17 22:39:53 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:39:53 | ===== sending message to look for 2022-06-17 22:39:54 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:39:54 | ===== broadcasting presence 2022-06-17 22:39:54 | [Mutex] waiting for: [message:1a36ea16-c57c-495a-97fd-23791b09e71e] 2022-06-17 22:39:54 | [Mutex] received everything. 2022-06-17 22:39:54 | [Mutex] isItemNotified: message:1a36ea16-c57c-495a-97fd-23791b09e71e :: true |
testMessageDeliveryReliabilityWithoutResumptionAndWithFullJidAndDelay | 3.295s |
2022-06-17 22:39:55 |
2022-06-17 22:39:55 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:39:55 | ------------------------------------ 2022-06-17 22:39:55 | [Mutex] waiting for: [message:b986ec82-e6b5-4c2b-86c6-8b7770415095] 2022-06-17 22:39:55 | [Mutex] received everything. 2022-06-17 22:39:55 | ===== simulation of connection failure 2022-06-17 22:39:55 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:39:55 | ===== sending message to look for 2022-06-17 22:39:56 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:39:59 | ===== broadcasting presence 2022-06-17 22:39:59 | [Mutex] received everything. 2022-06-17 22:39:59 | [Mutex] isItemNotified: message:d2ad1d12-2f07-4a60-96f3-c6fdd47c0e20 :: true |
testMessageDeliveryReliabilityWithoutResumptionAndWithoutFullJid | 1.379s |
2022-06-17 22:39:59 |
2022-06-17 22:39:59 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:39:59 | ------------------------------------ 2022-06-17 22:39:59 | [Mutex] waiting for: [message:96422975-433c-4927-8dd5-f34830fdd4ee] 2022-06-17 22:39:59 | [Mutex] received everything. 2022-06-17 22:39:59 | ===== simulation of connection failure 2022-06-17 22:39:59 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:39:59 | ===== sending message to look for 2022-06-17 22:40:00 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:40:01 | ===== broadcasting presence 2022-06-17 22:40:01 | [Mutex] waiting for: [message:a32558b2-497e-4ab8-9dcc-076be3bd664b] 2022-06-17 22:40:01 | [Mutex] waiting for: [message:a32558b2-497e-4ab8-9dcc-076be3bd664b] 2022-06-17 22:40:01 | [Mutex] waiting for: [message:a32558b2-497e-4ab8-9dcc-076be3bd664b] 2022-06-17 22:40:01 | [Mutex] received everything. 2022-06-17 22:40:01 | [Mutex] isItemNotified: message:a32558b2-497e-4ab8-9dcc-076be3bd664b :: true |
testMessageDeliveryReliabilityWithoutResumptionAndWithoutFullJidAndDelay | 3.334s |
2022-06-17 22:40:02 |
2022-06-17 22:40:02 | null / [TestClass name=class tigase.tests.server.offlinemsg.TestOfflineMessageDeliveryAfterSmResumptionTimeout] 2022-06-17 22:40:02 | ------------------------------------ 2022-06-17 22:40:02 | [Mutex] waiting for: [message:cc72e727-e871-4d85-aa4a-55a8ccc895c2] 2022-06-17 22:40:02 | [Mutex] waiting for: [message:cc72e727-e871-4d85-aa4a-55a8ccc895c2] 2022-06-17 22:40:02 | [Mutex] received everything. 2022-06-17 22:40:02 | ===== simulation of connection failure 2022-06-17 22:40:02 | ===== sending dummy message so client will discover it is disconnected (workaround) 2022-06-17 22:40:02 | ===== sending message to look for 2022-06-17 22:40:03 | ===== reconnecting client (resumption of stream or binding using same resource) 2022-06-17 22:40:05 | ===== broadcasting presence 2022-06-17 22:40:05 | [Mutex] waiting for: [message:581f2a4c-ea1f-43f2-8b78-2c6d09bc19fa] 2022-06-17 22:40:05 | [Mutex] waiting for: [message:581f2a4c-ea1f-43f2-8b78-2c6d09bc19fa] 2022-06-17 22:40:05 | [Mutex] waiting for: [message:581f2a4c-ea1f-43f2-8b78-2c6d09bc19fa] 2022-06-17 22:40:05 | [Mutex] received everything. 2022-06-17 22:40:05 | [Mutex] isItemNotified: message:581f2a4c-ea1f-43f2-8b78-2c6d09bc19fa :: true |