How to use find method of com.consol.citrus.message.correlation.PollingCorrelationManager class

Best Citrus code snippet using com.consol.citrus.message.correlation.PollingCorrelationManager.find

Source:PollingCorrelationManager.java Github

copy

Full Screen

...19import com.consol.citrus.exceptions.CitrusRuntimeException;20import org.slf4j.Logger;21import org.slf4j.LoggerFactory;22/**23 * Extension of default correlation manager adds polling mechanism for find operation on object store.24 * In case object is not found in store retry is automatically performed. Polling interval and overall retry timeout25 * is usually defined in endpoint configuration.26 *27 * @author Christoph Deppisch28 * @since 2.129 */30public class PollingCorrelationManager<T> extends DefaultCorrelationManager<T> {31 private final String retryLogMessage;32 private final PollableEndpointConfiguration endpointConfiguration;33 /** Logger */34 private static Logger log = LoggerFactory.getLogger(PollingCorrelationManager.class);35 /** Retry logger */36 private static final Logger RETRY_LOG = LoggerFactory.getLogger("com.consol.citrus.RetryLogger");37 /**38 * Constructor using fields.39 * @param endpointConfiguration40 * @param retryLogMessage41 */42 public PollingCorrelationManager(PollableEndpointConfiguration endpointConfiguration, String retryLogMessage) {43 this.retryLogMessage = retryLogMessage;44 this.endpointConfiguration = endpointConfiguration;45 }46 /**47 * Convenience method for using default timeout settings of endpoint configuration.48 * @param correlationKey49 * @return50 */51 public T find(String correlationKey) {52 return find(correlationKey, endpointConfiguration.getTimeout());53 }54 @Override55 public String getCorrelationKey(String correlationKeyName, TestContext context) {56 if (log.isDebugEnabled()) {57 log.debug(String.format("Get correlation key for '%s'", correlationKeyName));58 }59 String correlationKey = null;60 if (context.getVariables().containsKey(correlationKeyName)) {61 correlationKey = context.getVariable(correlationKeyName);62 }63 long timeLeft = 1000L;64 long pollingInterval = 300L;65 while (correlationKey == null && timeLeft > 0) {66 timeLeft -= pollingInterval;67 if (RETRY_LOG.isDebugEnabled()) {68 RETRY_LOG.debug("Correlation key not available yet - retrying in " + (timeLeft > 0 ? pollingInterval : pollingInterval + timeLeft) + "ms");69 }70 try {71 Thread.sleep(timeLeft > 0 ? pollingInterval : pollingInterval + timeLeft);72 } catch (InterruptedException e) {73 RETRY_LOG.warn("Thread interrupted while waiting for retry", e);74 }75 if (context.getVariables().containsKey(correlationKeyName)) {76 correlationKey = context.getVariable(correlationKeyName);77 }78 }79 if (correlationKey == null) {80 throw new CitrusRuntimeException(String.format("Failed to get correlation key for '%s'", correlationKeyName));81 }82 return correlationKey;83 }84 @Override85 public T find(String correlationKey, long timeout) {86 long timeLeft = timeout;87 long pollingInterval = endpointConfiguration.getPollingInterval();88 T stored = super.find(correlationKey, timeLeft);89 while (stored == null && timeLeft > 0) {90 timeLeft -= pollingInterval;91 if (RETRY_LOG.isDebugEnabled()) {92 RETRY_LOG.debug(retryLogMessage + " - retrying in " + (timeLeft > 0 ? pollingInterval : pollingInterval + timeLeft) + "ms");93 }94 try {95 Thread.sleep(timeLeft > 0 ? pollingInterval : pollingInterval + timeLeft);96 } catch (InterruptedException e) {97 RETRY_LOG.warn("Thread interrupted while waiting for retry", e);98 }99 stored = super.find(correlationKey, timeLeft);100 }101 return stored;102 }103 /**104 * Gets the retry log message105 * @return106 */107 public String getRetryLogMessage() {108 return retryLogMessage;109 }110}...

Full Screen

Full Screen

Source:DockerClient.java Github

copy

Full Screen

...85 getEndpointConfiguration().getCorrelator().getCorrelationKeyName(getName()), context), context, timeout);86 }87 @Override88 public Message receive(String selector, TestContext context, long timeout) {89 DockerCommand command = correlationManager.find(selector, timeout);90 if (command == null) {91 throw new ActionTimeoutException("Action timeout while receiving synchronous reply message from http server");92 }93 return new DefaultMessage(command.getCommandResult());94 }95 @Override96 public Producer createProducer() {97 return this;98 }99 @Override100 public SelectiveConsumer createConsumer() {101 return this;102 }103}...

Full Screen

Full Screen

Source:VertxSyncConsumer.java Github

copy

Full Screen

...59 public void send(Message message, TestContext context) {60 Assert.notNull(message, "Message is empty - unable to send empty message");61 String correlationKeyName = endpointConfiguration.getCorrelator().getCorrelationKeyName(getName());62 String correlationKey = correlationManager.getCorrelationKey(correlationKeyName, context);63 String replyAddress = correlationManager.find(correlationKey, endpointConfiguration.getTimeout());64 Assert.notNull(replyAddress, "Failed to find reply address for message correlation key: '" + correlationKey + "'");65 if (log.isDebugEnabled()) {66 log.debug("Sending Vert.x message to event bus address: '" + replyAddress + "'");67 }68 vertx.eventBus().send(replyAddress, message.getPayload());69 context.onOutboundMessage(message);70 log.info("Message was sent to Vert.x event bus address: '" + replyAddress + "'");71 }72 /**73 * Store the reply address either straight forward or with a given74 * message correlation key.75 *76 * @param receivedMessage77 * @param context78 */...

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1import org.junit.Test;2import org.junit.runner.RunWith;3import com.consol.citrus.annotations.CitrusTest;4import com.consol.citrus.dsl.junit.JUnit4CitrusTestRunner;5import com.consol.citrus.dsl.testng.TestNGCitrusTestRunner;6import com.consol.citrus.dsl.testng.TestNGCitrusTestRunner;7import com.consol.citrus.message.MessageType;8import com.consol.citrus.testng.CitrusParameters;9import com.consol.citrus.validation.json.JsonTextMes

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus;2import com.consol.citrus.context.TestContext;3import com.consol.citrus.message.Message;4import com.consol.citrus.message.MessageType;5import com.consol.citrus.message.correlation.CorrelationManager;6import com.consol.citrus.message.correlation.PollingCorrelationManager;7import com.consol.citrus.message.correlation.ReplyMessageCorrelator;8import com.consol.citrus.message.correlation.ReplyMessageCorrelatorFactory;9import com.consol.citrus.message.selector.MessageSelector;10import com.consol.citrus.message.selector.MessageSelectorBuilder;11import com.consol.citrus.message.selector.MessageSelectorParser;12import com.consol.citrus.message.selector.SimpleMessageSelectorParser;13import com.consol.citrus.message.selector.XPathMessageSelector;14import com.consol.citrus.message.selector.XPathMessageSelectorParser;

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.samples;2import org.springframework.context.support.ClassPathXmlApplicationContext;3import com.consol.citrus.context.TestContext;4import com.consol.citrus.context.TestContextFactory;5import com.consol.citrus.message.Message;6import com.consol.citrus.message.MessageType;7import com.consol.citrus.message.correlation.PollingCorrelationManager;8public class Test4 {9 public static void main(String[] args) {10 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("context.xml");11 PollingCorrelationManager correlationManager = context.getBean(PollingCorrelationManager.class);12 TestContext testContext = TestContextFactory.newInstance().createTestContext();13 testContext.setVariable("correlationKey", "key1");14 Message message = new Message.Builder()15 .payload("<TestRequestMessage><text>Hello World!</text></TestRequestMessage>")16 .header("operation", "greet")17 .header("correlationKey", "${correlationKey}")18 .build();19 correlationManager.store(message, testContext);20 Message response = correlationManager.find("key1", 10000L, testContext);21 System.out.println("Response: " + response.getPayload());22 }23}

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus;2import java.util.HashMap;3import java.util.Map;4import org.springframework.context.ApplicationContext;5import org.springframework.context.support.ClassPathXmlApplicationContext;6import com.consol.citrus.message.correlation.PollingCorrelationManager;7public class FindMethod {8 public static void main(String[] args) {9 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");10 PollingCorrelationManager pollingCorrelationManager = (PollingCorrelationManager) ctx.getBean("pollingCorrelationManager");11 Map<String, Object> correlationKey = new HashMap<String, Object>();12 correlationKey.put("id", "123");13 Message message = pollingCorrelationManager.find(correlationKey, 0);14 System.out.println(message);15 }16}17package com.consol.citrus;18import java.util.HashMap;19import java.util.Map;20import org.springframework.context.ApplicationContext;21import org.springframework.context.support.ClassPathXmlApplicationContext;22import com.consol.citrus.message.correlation.PollingCorrelationManager;23public class FindMethod {24 public static void main(String[] args) {25 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");26 PollingCorrelationManager pollingCorrelationManager = (PollingCorrelationManager) ctx.getBean("pollingCorrelationManager");27 Map<String, Object> correlationKey = new HashMap<String, Object>();28 correlationKey.put("id", "123");29 Message message = pollingCorrelationManager.find(correlationKey, 0);30 System.out.println(message);31 }32}33package com.consol.citrus;34import java.util.HashMap;35import java.util.Map;36import org.springframework.context.ApplicationContext;37import org.springframework.context.support.ClassPathXmlApplicationContext;38import com.consol.citrus.message.correlation.PollingCorrelationManager;39public class FindMethod {40 public static void main(String[] args) {41 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1import org.springframework.context.support.ClassPathXmlApplicationContext;2import org.springframework.context.ApplicationContext;3import org.springframework.beans.factory.annotation.Autowired;4import org.springframework.beans.factory.annotation.Qualifier;5import com.consol.citrus.message.correlation.PollingCorrelationManager;6import com.consol.citrus.message.correlation.MessageCorrelator;7public class 4 {8 @Qualifier("pollingCorrelationManager")9 private PollingCorrelationManager pollingCorrelationManager;10 public static void main(String[] args) {11 ApplicationContext context = new ClassPathXmlApplicationContext("spring/applicationContext.xml");12 4 4 = (4) context.getBean("4");13 4.execute();14 }15 public void execute() {16 MessageCorrelator correlator = pollingCorrelationManager.find("123", 5000);17 }18}19 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)20 at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)21 at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)22 at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)23 at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)24 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)25 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)26 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)27 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)28 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)29 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)30 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)31 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)32 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)33 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1public class 4 {2public static void main(String[] args) {3PollingCorrelationManager pollingCorrelationManager = new PollingCorrelationManager();4pollingCorrelationManager.setPollingInterval(500);5pollingCorrelationManager.setPollingIntervalUnit(TimeUnit.MILLISECONDS);6pollingCorrelationManager.setPollingTimeout(10000);7pollingCorrelationManager.setPollingTimeoutUnit(TimeUnit.MILLISECONDS);8pollingCorrelationManager.start();9String message = "Hello World!";10pollingCorrelationManager.store("correlationKey", message);11pollingCorrelationManager.find("correlationKey");12}13}14Syntax: public Object find(String correlationKey)15public class 5 {16public static void main(String[] args) {17PollingCorrelationManager pollingCorrelationManager = new PollingCorrelationManager();18pollingCorrelationManager.setPollingInterval(500);19pollingCorrelationManager.setPollingIntervalUnit(TimeUnit.MILLISECONDS);20pollingCorrelationManager.setPollingTimeout(10000);21pollingCorrelationManager.setPollingTimeoutUnit(TimeUnit.MILLISECONDS);22pollingCorrelationManager.start();23String message = "Hello World!";24pollingCorrelationManager.store("correlationKey", message);25pollingCorrelationManager.find("correlationKey");26}27}28Syntax: public Object remove(String correlationKey)

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1public class FindMessageTest extends AbstractTestNGCitrusTest {2 public void findMessageTest() {3 variable("messageId", "1234567890");4 variable("messageId2", "0987654321");5 variable("messageId3", "0123456789");6 variable("messageId4", "9876543210");7 variable("messageId5", "1234567890");8 variable("messageId6", "0987654321");9 variable("messageId7", "0123456789");10 variable("messageId8", "9876543210");11 variable("messageId9", "1234567890");12 variable("messageId10", "0987654321");13 variable("messageId11", "0123456789");14 variable("messageId12", "9876543210");15 variable("messageId13", "1234567890");16 variable("messageId14", "0987654321");17 variable("messageId15", "0123456789");18 variable("messageId16", "9876543210");19 variable("messageId17", "1234567890");20 variable("messageId18", "0987654321");21 variable("messageId19", "0123456789");22 variable("messageId20", "9876543210");23 variable("messageId21", "1234567890");24 variable("messageId22", "0987654321");25 variable("messageId23", "0123456789");26 variable("messageId24", "9876543210");27 variable("messageId25", "1234567890");28 variable("messageId26", "0987654321");29 variable("messageId27", "0123456789");30 variable("messageId28", "9876543210");31 variable("messageId29", "1234567890");32 variable("messageId30", "0987654321");33 variable("messageId31", "0123456789");34 variable("messageId32", "9876543210");35 variable("messageId33", "1234567890");36 variable("messageId34", "0987654321");37 variable("messageId35", "0123456789");38 variable("messageId36", "9876543210");39 variable("message

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1import com.consol.citrus.message.correlation.PollingCorrelationManager;2import com.consol.citrus.message.Message;3import com.consol.citrus.message.DefaultMessage;4public class 4 {5 public static void main(String[] args) {6 PollingCorrelationManager manager = new PollingCorrelationManager();7 Message message = manager.find("test", 1000);8 System.out.println(message);9 }10}11import com.consol.citrus.message.correlation.PollingCorrelationManager;12import com.consol.citrus.message.Message;13import com.consol.citrus.message.DefaultMessage;14public class 5 {15 public static void main(String[] args) {16 PollingCorrelationManager manager = new PollingCorrelationManager();17 Message message = manager.find("test", 1000);18 System.out.println(message);19 }20}21import com.consol.citrus.message.correlation.PollingCorrelationManager;22import com.consol.citrus.message.Message;23import com.consol.citrus.message.DefaultMessage;24public class 6 {25 public static void main(String[] args) {26 PollingCorrelationManager manager = new PollingCorrelationManager();27 Message message = manager.find("test", 1000);28 System.out.println(message);29 }30}31import com.consol.citrus.message.correlation.PollingCorrelationManager;32import com.consol.citrus.message.Message;33import com.consol.citrus.message.DefaultMessage;34public class 7 {35 public static void main(String[] args) {

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.samples;2import org.springframework.context.support.ClassPathXmlApplicationContext;3import com.consol.citrus.message.Message;4import com.consol.citrus.message.MessageSelector;5import com.consol.citrus.message.correlation.PollingCorrelationManager;6public class FindMessage {7 public static void main(String[] args) {8 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");9 PollingCorrelationManager correlationManager = context.getBean("pollingCorrelationManager", PollingCorrelationManager.class);10 MessageSelector messageSelector = MessageSelector.builder().selector("operation = 'getCustomer'").build();11 Message message = correlationManager.find(messageSelector);12 System.out.println(message.toString());13 }14}15package com.consol.citrus.samples;16import org.springframework.context.support.ClassPathXmlApplicationContext;17import com.consol.citrus.message.Message;18import com.consol.citrus.message.MessageSelector;19import com.consol.citrus.message.correlation.PollingCorrelationManager;20public class FindMessage {21 public static void main(String[] args) {22 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");23 PollingCorrelationManager correlationManager = context.getBean("pollingCorrelationManager", PollingCorrelationManager.class);24 MessageSelector messageSelector = MessageSelector.builder().selector("operation = 'getCustomer'").build();25 Message message = correlationManager.find(messageSelector);26 System.out.println(message.toString());27 }28}29package com.consol.citrus.samples;30import org.springframework.context.support.ClassPathXmlApplicationContext;31import com.consol.citrus.message.Message;32import com.consol.citrus.message.MessageSelector;33import com.consol.citrus.message.correlation.PollingCorrelationManager;34public class FindMessage {35 public static void main(String[] args) {36import com.consol.citrus.message.correlation.PollingCorrelationManager;37import com.consol.citrus.message.Message;38import com.consol.citrus.message.DefaultMessage;39public class 4 {40 public static void main(String[] args) {41 PollingCorrelationManager manager = new PollingCorrelationManager();42 Message message = manager.find("test", 1000);43 System.out.println(message);44 }45}46import com.consol.citrus.message.correlation.PollingCorrelationManager;47import com.consol.citrus.message.Message;48import com.consol.citrus.message.DefaultMessage;49public class 5 {50 public static void main(String[] args) {51 PollingCorrelationManager manager = new PollingCorrelationManager();52 Message message = manager.find("test", 1000);53 System.out.println(message);54 }55}56import com.consol.citrus.message.correlation.PollingCorrelationManager;57import com.consol.citrus.message.Message;58import com.consol.citrus.message.DefaultMessage;59public class 6 {60 public static void main(String[] args) {61 PollingCorrelationManager manager = new PollingCorrelationManager();62 Message message = manager.find("test", 1000);63 System.out.println(message);64 }65}66import com.consol.citrus.message.correlation.PollingCorrelationManager;67import com.consol.citrus.message.Message;68import com.consol.citrus.message.DefaultMessage;69public class 7 {70 public static void main(String[] args) {

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.samples;2import org.springframework.context.support.ClassPathXmlApplicationContext;3import com.consol.citrus.message.Message;4import com.consol.citrus.message.MessageSelector;5import com.consol.citrus.message.correlation.PollingCorrelationManager;6public class FindMessage {7 public static void main(String[] args) {8 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");9 PollingCorrelationManager correlationManager = context.getBean("pollingCorrelationManager", PollingCorrelationManager.class);10 MessageSelector messageSelector = MessageSelector.builder().selector("operation = 'getCustomer'").build();11 Message message = correlationManager.find(messageSelector);12 System.out.println(message.toString());13 }14}15package com.consol.citrus.samples;16import org.springframework.context.support.ClassPathXmlApplicationContext;17import com.consol.citrus.message.Message;18import com.consol.citrus.message.MessageSelector;19import com.consol.citrus.message.correlation.PollingCorrelationManager;20public class FindMessage {21 public static void main(String[] args) {22 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");23 PollingCorrelationManager correlationManager = context.getBean("pollingCorrelationManager", PollingCorrelationManager.class);24 MessageSelector messageSelector = MessageSelector.builder().selector("operation = 'getCustomer'").build();25 Message message = correlationManager.find(messageSelector);26 System.out.println(message.toString());27 }28}29package com.consol.citrus.samples;30import org.springframework.context.support.ClassPathXmlApplicationContext;31import com.consol.citrus.message.Message;32import com.consol.citrus.message.MessageSelector;33import com.consol.citrus.message.correlation.PollingCorrelationManager;34public class FindMessage {35 public static void main(String[] args) {36public class 5 {37public static void main(String[] args) {38PollingCorrelationManager pollingCorrelationManager = new PollingCorrelationManager();39pollingCorrelationManager.setPollingInterval(500);40pollingCorrelationManager.setPollingIntervalUnit(TimeUnit.MILLISECONDS);41pollingCorrelationManager.setPollingTimeout(10000);42pollingCorrelationManager.setPollingTimeoutUnit(TimeUnit.MILLISECONDS);43pollingCorrelationManager.start();44String message = "Hello World!";45pollingCorrelationManager.store("correlationKey", message);46pollingCorrelationManager.find("correlationKey");47}48}49Syntax: public Object remove(String correlationKey)

Full Screen

Full Screen

find

Using AI Code Generation

copy

Full Screen

1import com.consol.citrus.message.correlation.PollingCorrelationManager;2import com.consol.citrus.message.Message;3import com.consol.citrus.message.DefaultMessage;4public class 4 {5 public static void main(String[] args) {6 PollingCorrelationManager manager = new PollingCorrelationManager();7 Message message = manager.find("test", 1000);8 System.out.println(message);9 }10}11import com.consol.citrus.message.correlation.PollingCorrelationManager;12import com.consol.citrus.message.Message;13import com.consol.citrus.message.DefaultMessage;14public class 5 {15 public static void main(String[] args) {16 PollingCorrelationManager manager = new PollingCorrelationManager();17 Message message = manager.find("test", 1000);18 System.out.println(message);19 }20}21import com.consol.citrus.message.correlation.PollingCorrelationManager;22import com.consol.citrus.message.Message;23import com.consol.citrus.message.DefaultMessage;24public class 6 {25 public static void main(String[] args) {26 PollingCorrelationManager manager = new PollingCorrelationManager();27 Message message = manager.find("test", 1000);28 System.out.println(message);29 }30}31import com.consol.citrus.message.correlation.PollingCorrelationManager;32import com.consol.citrus.message.Message;33import com.consol.citrus.message.DefaultMessage;34public class 7 {35 public static void main(String[] args) {

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Citrus automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in PollingCorrelationManager

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful