Author: alexoree
Date: Mon Feb 3 23:12:33 2014
New Revision: 1564123
URL: http://svn.apache.org/r1564123
Log:
JUDDI-242 adding smtp and http delivery test for getTModelDetails (tck runner).
smtp tests should be more reliable now with proper decoding
Modified:
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java
juddi/trunk/uddi-tck-runner/tck.properties
juddi/trunk/uddi-tck/pom.xml
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_SubscriptionListenerExternalTest.java
Modified:
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java
URL:
http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java?rev=1564123&r1=1564122&r2=1564123&view=diff
==============================================================================
---
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java
(original)
+++
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java
Mon Feb 3 23:12:33 2014
@@ -140,7 +140,8 @@ public class SMTPNotifier implements Not
message.setFrom(new
InternetAddress(getEMailProperties().getProperty("mail.smtp.from", "jUDDI")));
//maybe nice to use a template rather then
sending raw xml.
String subscriptionResultXML =
JAXBMarshaller.marshallToString(body, JAXBMarshaller.PACKAGE_SUBSCR_RES);
- message.setText(subscriptionResultXML, "UTF-8");
+ //message.setText(subscriptionResultXML,
"UTF-8");
+ message.setContent(subscriptionResultXML,
"text/xml; charset=UTF-8;");
message.setSubject("UDDI Subscription
Notification for subscription "
+
body.getSubscriptionResultsList().getSubscription().getSubscriptionKey());
Transport.send(message);
Modified: juddi/trunk/uddi-tck-runner/tck.properties
URL:
http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-runner/tck.properties?rev=1564123&r1=1564122&r2=1564123&view=diff
==============================================================================
--- juddi/trunk/uddi-tck-runner/tck.properties (original)
+++ juddi/trunk/uddi-tck-runner/tck.properties Mon Feb 3 23:12:33 2014
@@ -35,7 +35,7 @@ vsv.enabled = false
sub.enabled=true
#subscription callback timeouts, in seconds
-sub.timeout=60
+sub.timeout=15
#does the UDDI server support the Custody Transfer API?
transfer.enabled=true
@@ -49,14 +49,15 @@ smtp.notify.enabled=true
#if true, use these settings to verify message delivery/notification
-mail.host=localhost
-mail.port=110
-#this can be TLS
-#mail.secureProtocol=TLS
-#mail.implicit=false
[email protected]
-mail.password=da_password1
[email protected]
+mail.pop3.host=localhost
+mail.pop3.port=110
+#mail.pop3.socketFactory.class
+#mail.pop3.socketFactory.fallback
+#mail.pop3.socketFactory.port
[email protected]
+mail.pop3.password=da_password1
+#tell UDDI to send alerts to this address
[email protected]
# for UDDI server callbacks (subscription api, value set validation)
# use this to override the bind to address, by default it's the hostname of
the computer running the tests from
Modified: juddi/trunk/uddi-tck/pom.xml
URL:
http://svn.apache.org/viewvc/juddi/trunk/uddi-tck/pom.xml?rev=1564123&r1=1564122&r2=1564123&view=diff
==============================================================================
--- juddi/trunk/uddi-tck/pom.xml (original)
+++ juddi/trunk/uddi-tck/pom.xml Mon Feb 3 23:12:33 2014
@@ -92,6 +92,22 @@
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4.7</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.9</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-email</artifactId>
+ <version>1.3.2</version>
+ </dependency>
+
</dependencies>
<build>
<plugins>
Modified:
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_SubscriptionListenerExternalTest.java
URL:
http://svn.apache.org/viewvc/juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_SubscriptionListenerExternalTest.java?rev=1564123&r1=1564122&r2=1564123&view=diff
==============================================================================
---
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_SubscriptionListenerExternalTest.java
(original)
+++
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_SubscriptionListenerExternalTest.java
Mon Feb 3 23:12:33 2014
@@ -14,8 +14,10 @@ package org.apache.juddi.v3.tck;
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.Properties;
@@ -35,11 +37,23 @@ import org.uddi.v3_service.UDDISubscript
import java.net.InetAddress;
import java.util.ArrayList;
+import java.util.Enumeration;
import java.util.List;
import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.mail.Flags;
+import javax.mail.Folder;
+import javax.mail.Message;
+import javax.mail.Session;
+import javax.mail.Store;
+import javax.mail.internet.MimeMessage;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Holder;
+import org.apache.commons.codec.net.QuotedPrintableCodec;
+import org.apache.commons.mail.util.MimeMessageParser;
+//import org.apache.commons.io.IOUtils;
import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.pop3.POP3Client;
import org.apache.commons.net.pop3.POP3MessageInfo;
@@ -49,23 +63,28 @@ import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
import org.uddi.api_v3.BusinessEntity;
+import org.uddi.api_v3.Description;
import org.uddi.api_v3.GetBusinessDetail;
+import org.uddi.api_v3.GetTModelDetail;
import org.uddi.api_v3.Name;
import org.uddi.api_v3.SaveBusiness;
+import org.uddi.api_v3.SaveTModel;
+import org.uddi.api_v3.TModel;
import org.uddi.sub_v3.DeleteSubscription;
import org.uddi.sub_v3.Subscription;
import org.uddi.sub_v3.SubscriptionFilter;
/**
- * Used only when running the TCK against a running UDDI server (could be
something other than jUDDI)
- * from the juddi-tck-runner application. The 'external' part is really
managing
- * hostnames for callbacks, and for using an external smtp server for smtp
based notifications.<br><br>
- * WARNING, when adding changes to this class, you MUST always add the
corresponding functions.<br><br>
+ * Used only when running the TCK against a running UDDI server (could be
+ * something other than jUDDI) from the juddi-tck-runner application. The
+ * 'external' part is really managing hostnames for callbacks, and for using an
+ * external smtp server for smtp based notifications.<br><br>
+ * WARNING, when adding changes to this class, you MUST always add the
+ * corresponding functions.<br><br>
* to UDDI_090_SubscriptionListenerIntegrationTest
- *
+ *
* @see UDDI_090_SubscriptionListenerIntegrationTest
* @author <a href="mailto:[email protected]">Tom Cunningham</a>
* @author <a href="mailto:[email protected]">Alex O'Ree</a>
@@ -124,13 +143,11 @@ public class UDDI_090_SubscriptionListen
logger.debug("Getting auth tokens..");
-
Transport transport = manager.getTransport();
UDDISecurityPortType security =
transport.getUDDISecurityService();
authInfoJoe = TckSecurity.getAuthToken(security,
TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
authInfoMary = TckSecurity.getAuthToken(security,
TckPublisher.getMaryPublisherId(), TckPublisher.getMaryPassword());
-
UDDIPublicationPortType publication =
transport.getUDDIPublishService();
inquiryJoe = transport.getUDDIInquiryService();
subscriptionJoe =
transport.getUDDISubscriptionService();
@@ -140,15 +157,11 @@ public class UDDI_090_SubscriptionListen
TckSecurity.setCredentials((BindingProvider)
subscriptionJoe, TckPublisher.getJoePublisherId(),
TckPublisher.getJoePassword());
}
-
tckTModelJoe = new TckTModel(publication, inquiryJoe);
tckBusinessJoe = new TckBusiness(publication,
inquiryJoe);
tckBusinessServiceJoe = new
TckBusinessService(publication, inquiryJoe);
tckSubscriptionListenerJoe = new
TckSubscriptionListener(subscriptionJoe, publication);
-
-
-
transport = manager.getTransport();
publication = transport.getUDDIPublishService();
publicationMary = publication;
@@ -160,13 +173,12 @@ public class UDDI_090_SubscriptionListen
TckSecurity.setCredentials((BindingProvider)
subscriptionMary, TckPublisher.getMaryPublisherId(),
TckPublisher.getMaryPassword());
}
-
tckTModelMary = new TckTModel(publication,
inquiryMary);
tckBusinessMary = new TckBusiness(publication,
inquiryMary);
tckBusinessServiceMary = new
TckBusinessService(publication, inquiryMary);
tckSubscriptionListenerMary = new
TckSubscriptionListener(subscriptionMary, publication);
- email =
TckPublisher.getProperties().getProperty("mail.to");
+ email =
TckPublisher.getProperties().getProperty("mail.pop3.to");
} catch (Exception e) {
logger.error(e.getMessage(), e);
@@ -232,109 +244,96 @@ public class UDDI_090_SubscriptionListen
}
/**
- * gets all current messages from the mail server and returns return
+ * gets all current messages from the mail server and returns the
number
+ * of messages containing the string, messages containing the string
are deleted from the mail server
* String is the body of each message
+ * @return number of matching and deleted messages
+ * @param contains a string to search for
*/
private static int fetchMail(String contains) {
- /*if (args.length < 3)
- {
- System.err.println(
- "Usage: POP3Mail <pop3 server hostname> <username> <password>
[TLS [true=implicit]]");
- System.exit(1);
- }*/
- Properties properties = TckPublisher.getProperties();
-
- String server = properties.getProperty("mail.host");
- String username = properties.getProperty("mail.username");
- String password = properties.getProperty("mail.password");
-
- String proto = properties.getProperty("mail.secureProtocol");
- boolean implicit = false;
- try {
- implicit =
Boolean.parseBoolean(properties.getProperty("mail.secureProtocol"));
- } catch (Exception ex) {
- }
- POP3Client pop3;
-
- if (proto != null) {
- logger.debug("Using secure protocol: " + proto);
- pop3 = new POP3SClient(proto, implicit);
- } else {
- pop3 = new POP3Client();
- }
- logger.debug("Connecting to server " + server + " on " +
pop3.getDefaultPort());
- // We want to timeout if a response takes longer than 60
seconds
- pop3.setDefaultTimeout(60000);
+ //final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
- // suppress login details
- pop3.addProtocolCommandListener(new PrintCommandListener(new
PrintWriter(System.out), true));
-
- try {
- pop3.connect(server);
- } catch (IOException e) {
- logger.error(e);
- Assert.fail("Could not connect to mail server." +
e.getMessage());
- }
-
- try {
- if (!pop3.login(username, password)) {
- logger.error("Could not login to server.
Check password.");
- pop3.disconnect();
-
- Assert.fail("Could not connect to mail server.
check password");
- }
-
- POP3MessageInfo[] messages = pop3.listMessages();
-
- if (messages == null) {
- logger.warn("Could not retrieve message
list.");
- pop3.disconnect();
- return 0;
- } else if (messages.length == 0) {
- logger.info("No messages");
- pop3.logout();
- pop3.disconnect();
- return 0;
- }
-
- int ret = 0;
- for (POP3MessageInfo msginfo : messages) {
- /*BufferedReader reader = (BufferedReader)
pop3.retrieveMessageTop(msginfo.number, 0);
+ /* Set the mail properties */
+ Properties properties = TckPublisher.getProperties();
+ // Set manual Properties
- if (reader == null) {
- logger.error("Could not retrieve message
header.");
- pop3.disconnect();
- return 0;
- }*/
- //printMessageInfo(reader, msginfo.number);
- BufferedReader reader = (BufferedReader)
pop3.retrieveMessage(msginfo.number);
- String line = "";
- StringBuilder sb = new StringBuilder();
- while ((line = reader.readLine()) != null) {
- String lower =
line.toLowerCase(Locale.ENGLISH);
- sb.append(lower);
+ int found = 0;
+ Session session = Session.getDefaultInstance(properties, null);
+ Store store = null;
+ try {
+ store = session.getStore("pop3");
+
+
store.connect(properties.getProperty("mail.pop3.host"),
Integer.parseInt(properties.getProperty("mail.pop3.port", "110")),
properties.getProperty("mail.pop3.username"),
properties.getProperty("mail.pop3.password"));
+ /* Mention the folder name which you want to read. */
+ // inbox = store.getDefaultFolder();
+ // inbox = inbox.getFolder("INBOX");
+ Folder inbox = store.getFolder("INBOX");
+
+ /* Open the inbox using store. */
+ inbox.open(Folder.READ_WRITE);
+
+ Message messages[] = inbox.getMessages();
+
+ for (int i = 0; i < messages.length; i++) {
+
+ MimeMessageParser p = new
MimeMessageParser(new MimeMessage(session, messages[i].getInputStream()));
+ Enumeration allHeaders =
p.getMimeMessage().getAllHeaders();
+ while (allHeaders.hasMoreElements()) {
+ Object j = allHeaders.nextElement();
+ if (j instanceof javax.mail.Header) {
+ javax.mail.Header msg =
(javax.mail.Header) j;
+ logger.info("XML as message
header is " + msg.getValue());
+ if
(msg.getValue().contains(contains)) {
+ //found it
+
messages[i].setFlag(Flags.Flag.DELETED, true);
+ found++;
+ }
+ }
+ }
+ for (int k = 0; k <
p.getAttachmentList().size(); k++) {
+ InputStream is =
p.getAttachmentList().get((k)).getInputStream();
+ QuotedPrintableCodec qp = new
QuotedPrintableCodec();
+ // If "is" is not already buffered,
wrap a BufferedInputStream
+ // around it.
+ if (!(is instanceof
BufferedInputStream)) {
+ is = new
BufferedInputStream(is);
+ }
+ int c;
+ StringBuilder sb = new StringBuilder();
+ System.out.println("Message : ");
+ while ((c = is.read()) != -1) {
+ sb.append(c);
+ System.out.write(c);
+ }
+ is.close();
+ String decoded =
qp.decode(sb.toString());
+ logger.info("decode message is " +
decoded);
+ if (decoded.contains(contains)) {
+ //found it
+
messages[i].setFlag(Flags.Flag.DELETED, true);
+ found++;
+ }
}
+ }
+ inbox.close(true);
- if (TckCommon.isDebug()) {
- logger.info("Email contents: " +
sb.toString());
- }
- if
(sb.toString().contains(contains.toLowerCase())) {
- ret++;
- pop3.deleteMessage(msginfo.number);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ } finally {
+ if (store != null) {
+ try {
+ store.close();
+ } catch (Exception ex) {
}
}
-
- pop3.logout();
- pop3.disconnect();
- return ret;
- } catch (IOException e) {
- logger.error(e);
- return 0;
}
+ return found;
}
+
+
@Test
public void joePublisher_SMTP_FIND_SERVICE() {
Assume.assumeNotNull(email);
@@ -480,7 +479,6 @@ public class UDDI_090_SubscriptionListen
//Saving the Subscription
tckSubscriptionListenerJoe.saveNotifierSubscription(authInfoJoe,
TckSubscriptionListener.SUBSCRIPTION2_SMTP_XML);
-
Thread.sleep(3000);
logger.info("Saving Mary's tModel ********** ");
tckTModelMary.saveMaryPublisherTmodel(authInfoMary);
@@ -504,7 +502,6 @@ public class UDDI_090_SubscriptionListen
Assert.fail("No email was received");
}
-
} catch (Exception e) {
logger.error("No exceptions please.");
e.printStackTrace();
@@ -541,7 +538,7 @@ public class UDDI_090_SubscriptionListen
//Changing the service we subscribed to
"JoePublisherService"
Thread.sleep(1000);
logger.info("Deleting tModel ********** ");
-
+
tckTModelJoe.deleteTModel(authInfoJoe,
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3,
TckTModel.JOE_PUBLISHER_TMODEL_SUBSCRIPTION3_TMODEL_KEY, true);
logger.info("Waiting " +
TckPublisher.getSubscriptionTimeout() + " seconds for delivery");
@@ -622,13 +619,12 @@ public class UDDI_090_SubscriptionListen
break;
}
}
- if (!received){
+ if (!received) {
logger.warn("Test failed, dumping business
list");
logger.warn("BEFORE " + before);
logger.warn("After " +
TckCommon.DumpAllTModels(authInfoJoe, inquiryJoe));
Assert.fail("No email was received");
}
-
} catch (Exception e) {
logger.error("No exceptions please.");
@@ -645,21 +641,18 @@ public class UDDI_090_SubscriptionListen
}
//TODO If a subscriber specifies a maximum number of entries to be
returned with a subscription and the amount of data to be returned exceeds this
limit, or if the node determines based on its policy that there are too many
entries to be returned in a single group, then the node SHOULD provide a
chunkToken with results.
//TODO If no more results are pending, the value of the chunkToken
MUST be "0".
-
-
-
-
+
/**
- * getBusiness tests
- * joe want's updates on mary's business
- * @throws Exception
+ * getBusiness tests joe want's updates on mary's business
+ *
+ * @throws Exception
*/
@Test
//@Ignore
- public void joePublisherUpdate_HTTP_GET_BUSINESS_DETAIL() throws
Exception{
+ public void joePublisherUpdate_HTTP_GET_BUSINESS_DETAIL() throws
Exception {
logger.info("joePublisherUpdate_HTTP_GET_BUSINESS_DETAIL");
TckCommon.removeAllExistingSubscriptions(authInfoJoe,
subscriptionJoe);
- Holder<List<Subscription>> holder=null;
+ Holder<List<Subscription>> holder = null;
try {
UDDISubscriptionListenerImpl.notifcationMap.clear();
UDDISubscriptionListenerImpl.notificationCount = 0;
@@ -667,10 +660,10 @@ public class UDDI_090_SubscriptionListen
tckTModelJoe.saveJoePublisherTmodel(authInfoJoe);
tckTModelJoe.saveTModels(authInfoJoe,
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3);
-
+
tckTModelMary.saveMaryPublisherTmodel(authInfoMary);
BusinessEntity saveMaryPublisherBusiness =
tckBusinessMary.saveMaryPublisherBusiness(authInfoMary);
-
+
tckBusinessJoe.saveJoePublisherBusiness(authInfoJoe);
tckBusinessServiceJoe.saveJoePublisherService(authInfoJoe);
//Saving the Listener Service
@@ -684,22 +677,22 @@ public class UDDI_090_SubscriptionListen
sub.setSubscriptionFilter(new SubscriptionFilter());
sub.getSubscriptionFilter().setGetBusinessDetail(new
GetBusinessDetail());
sub.getSubscriptionFilter().getGetBusinessDetail().getBusinessKey().add(TckBusiness.MARY_BUSINESS_KEY);
-
+
holder.value.add(sub);
subscriptionJoe.saveSubscription(authInfoJoe, holder);
//tckSubscriptionListenerJoe.saveNotifierSubscription(authInfoJoe,
TckSubscriptionListener.SUBSCRIPTION3_XML);
//Changing the service we subscribed to
"JoePublisherService"
Thread.sleep(1000);
logger.info("updating Mary's business ********** ");
-
updatePublisherBusiness(authInfoMary,saveMaryPublisherBusiness,
publicationMary);
-
+ updatePublisherBusiness(authInfoMary,
saveMaryPublisherBusiness, publicationMary);
+
logger.info("Waiting " +
TckPublisher.getSubscriptionTimeout() + " seconds for delivery");
//waiting up to 100 seconds for the listener to notice
the change.
for (int i = 0; i <
TckPublisher.getSubscriptionTimeout(); i++) {
Thread.sleep(1000);
System.out.print(".");
}
-
+
if (UDDISubscriptionListenerImpl.notificationCount ==
0) {
logger.warn("Test failed, dumping business
list");
logger.warn("BEFORE " + before);
@@ -737,28 +730,26 @@ public class UDDI_090_SubscriptionListen
subscriptionJoe.deleteSubscription(ds);
tckBusinessMary.deleteMaryPublisherBusiness(authInfoMary);
tckTModelMary.deleteMaryPublisherTmodel(authInfoMary);
-
+
tckBusinessServiceJoe.deleteJoePublisherService(authInfoJoe);
tckBusinessJoe.deleteJoePublisherBusiness(authInfoJoe);
tckTModelJoe.deleteJoePublisherTmodel(authInfoJoe);
tckTModelJoe.deleteTModel(authInfoJoe,
TckTModel.JOE_PUBLISHER_TMODEL_SUBSCRIPTION3_TMODEL_KEY,
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3);
-
+
}
}
-
-
- /**
- * getBusiness tests
- * joe want's updates on mary's business
- * @throws Exception
+ /**
+ * getBusiness tests joe want's updates on mary's business
+ *
+ * @throws Exception
*/
@Test
//@Ignore
- public void joePublisherUpdate_SMTP_GET_BUSINESS_DETAIL() throws
Exception{
+ public void joePublisherUpdate_SMTP_GET_BUSINESS_DETAIL() throws
Exception {
logger.info("joePublisherUpdate_SMTP_GET_BUSINESS_DETAIL");
TckCommon.removeAllExistingSubscriptions(authInfoJoe,
subscriptionJoe);
- Holder<List<Subscription>> holder=null;
+ Holder<List<Subscription>> holder = null;
try {
UDDISubscriptionListenerImpl.notifcationMap.clear();
UDDISubscriptionListenerImpl.notificationCount = 0;
@@ -766,10 +757,10 @@ public class UDDI_090_SubscriptionListen
tckTModelJoe.saveJoePublisherTmodel(authInfoJoe);
tckTModelJoe.saveTModels(authInfoJoe,
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3);
-
+
tckTModelMary.saveMaryPublisherTmodel(authInfoMary);
BusinessEntity saveMaryPublisherBusiness =
tckBusinessMary.saveMaryPublisherBusiness(authInfoMary);
-
+
tckBusinessJoe.saveJoePublisherBusiness(authInfoJoe);
tckBusinessServiceJoe.saveJoePublisherService(authInfoJoe);
//Saving the Listener Service
@@ -783,28 +774,28 @@ public class UDDI_090_SubscriptionListen
sub.setSubscriptionFilter(new SubscriptionFilter());
sub.getSubscriptionFilter().setGetBusinessDetail(new
GetBusinessDetail());
sub.getSubscriptionFilter().getGetBusinessDetail().getBusinessKey().add(TckBusiness.MARY_BUSINESS_KEY);
-
+
holder.value.add(sub);
subscriptionJoe.saveSubscription(authInfoJoe, holder);
//tckSubscriptionListenerJoe.saveNotifierSubscription(authInfoJoe,
TckSubscriptionListener.SUBSCRIPTION3_XML);
//Changing the service we subscribed to
"JoePublisherService"
Thread.sleep(1000);
logger.info("updating Mary's business ********** ");
-
updatePublisherBusiness(authInfoMary,saveMaryPublisherBusiness,
publicationMary);
-
+ updatePublisherBusiness(authInfoMary,
saveMaryPublisherBusiness, publicationMary);
+
logger.info("Waiting " +
TckPublisher.getSubscriptionTimeout() + " seconds for delivery");
//waiting up to 100 seconds for the listener to notice
the change.
boolean received = false;
for (int i = 0; i <
TckPublisher.getSubscriptionTimeout(); i++) {
Thread.sleep(1000);
System.out.print(".");
- if (fetchMail("tModel One") > 0) {
+ if (fetchMail("Updated Name") > 0) {
logger.info("Received Email
Notification");
received = true;
break;
}
}
-
+
if (!received) {
logger.warn("Test failed, dumping business
list");
logger.warn("BEFORE " + before);
@@ -825,28 +816,221 @@ public class UDDI_090_SubscriptionListen
subscriptionJoe.deleteSubscription(ds);
tckBusinessMary.deleteMaryPublisherBusiness(authInfoMary);
tckTModelMary.deleteMaryPublisherTmodel(authInfoMary);
-
+
tckBusinessServiceJoe.deleteJoePublisherService(authInfoJoe);
tckBusinessJoe.deleteJoePublisherBusiness(authInfoJoe);
tckTModelJoe.deleteJoePublisherTmodel(authInfoJoe);
tckTModelJoe.deleteTModel(authInfoJoe,
TckTModel.JOE_PUBLISHER_TMODEL_SUBSCRIPTION3_TMODEL_KEY,
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3);
-
+
}
}
-
-
/**
* adds a new name to the business, then resaves it
+ *
* @param auth
* @param biz
- * @param pub
+ * @param pub
*/
- public static void updatePublisherBusiness(String auth, BusinessEntity
biz, UDDIPublicationPortType pub) throws Exception{
+ public static void updatePublisherBusiness(String auth, BusinessEntity
biz, UDDIPublicationPortType pub) throws Exception {
biz.getName().add(new Name("Updated Name", "en"));
SaveBusiness sb = new SaveBusiness();
sb.setAuthInfo(auth);
sb.getBusinessEntity().add(biz);
pub.saveBusiness(sb);
}
+
+ /**
+ * getBusiness tests joe want's updates on mary's business
+ *
+ * @throws Exception
+ */
+ @Test
+ public void joePublisherUpdate_HTTP_GET_TMODEL_DETAIL() throws
Exception {
+ logger.info("joePublisherUpdate_HTTP_GET_TMODEL_DETAIL");
+ TckCommon.removeAllExistingSubscriptions(authInfoJoe,
subscriptionJoe);
+ Holder<List<Subscription>> holder = null;
+ try {
+ UDDISubscriptionListenerImpl.notifcationMap.clear();
+ UDDISubscriptionListenerImpl.notificationCount = 0;
+ String before = TckCommon.DumpAllTModels(authInfoJoe,
inquiryJoe);
+
+ tckTModelJoe.saveJoePublisherTmodel(authInfoJoe);
+ tckTModelJoe.saveTModels(authInfoJoe,
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3);
+ TModel saveMaryPublisherTmodel =
tckTModelMary.saveMaryPublisherTmodel(authInfoMary);
+
+ tckBusinessJoe.saveJoePublisherBusiness(authInfoJoe);
+
tckBusinessServiceJoe.saveJoePublisherService(authInfoJoe);
+ //Saving the Listener Service
+ tckSubscriptionListenerJoe.saveService(authInfoJoe,
TckSubscriptionListener.LISTENER_HTTP_SERVICE_XML, httpPort, hostname);
+
+ //Saving the Subscription
+ holder = new Holder<List<Subscription>>();
+ holder.value = new ArrayList<Subscription>();
+ Subscription sub = new Subscription();
+
sub.setBindingKey("uddi:uddi.joepublisher.com:bindinglistener");
+
sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(5000));
+ sub.setSubscriptionFilter(new SubscriptionFilter());
+ sub.getSubscriptionFilter().setGetTModelDetail(new
GetTModelDetail());
+
sub.getSubscriptionFilter().getGetTModelDetail().getTModelKey().add(TckTModel.MARY_PUBLISHER_TMODEL_KEY);
+
+ holder.value.add(sub);
+ subscriptionJoe.saveSubscription(authInfoJoe, holder);
+
//tckSubscriptionListenerJoe.saveNotifierSubscription(authInfoJoe,
TckSubscriptionListener.SUBSCRIPTION3_XML);
+ //Changing the service we subscribed to
"JoePublisherService"
+ Thread.sleep(1000);
+ logger.info("updating Mary's tModel ********** ");
+ updateTModel(authInfoMary, saveMaryPublisherTmodel,
publicationMary);
+
+ logger.info("Waiting " +
TckPublisher.getSubscriptionTimeout() + " seconds for delivery");
+ //waiting up to 100 seconds for the listener to notice
the change.
+ for (int i = 0; i <
TckPublisher.getSubscriptionTimeout(); i++) {
+ Thread.sleep(1000);
+ System.out.print(".");
+ if
(UDDISubscriptionListenerImpl.notificationCount > 0) {
+ // logger.info("Received
Notification");
+// break;
+ }
+ }
+
+ if (UDDISubscriptionListenerImpl.notificationCount ==
0) {
+ logger.warn("Test failed, dumping business
list");
+ logger.warn("BEFORE " + before);
+ logger.warn("After " +
TckCommon.DumpAllTModels(authInfoJoe, inquiryJoe));
+ Assert.fail("No Notification was sent");
+ }
+ Iterator<String> it =
UDDISubscriptionListenerImpl.notifcationMap.values().iterator();
+ StringBuilder sb = new StringBuilder();
+ boolean found = false;
+ while (it.hasNext()) {
+ String test = it.next();
+ sb.append("Message: " + test +
System.getProperty("line.separator"));
+ if (test.contains("a new description")) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ logger.warn("Test failed, dumping business
list");
+ logger.warn("BEFORE " + before);
+ logger.warn("After " +
TckCommon.DumpAllBusinesses(authInfoJoe, inquiryJoe));
+ logger.warn("Messages RX " + sb.toString());
+ Assert.fail("Notification does not contain the
correct service. Messages received: " + sb.toString());
+ }
+
+ } catch (Exception e) {
+ logger.error("No exceptions please.");
+ e.printStackTrace();
+
+ Assert.fail();
+ } finally {
+
//tckSubscriptionListenerJoe.deleteNotifierSubscription(authInfoJoe,
TckSubscriptionListener.SUBSCRIPTION_KEY);
+ DeleteSubscription ds = new DeleteSubscription();
+ ds.setAuthInfo(authInfoJoe);
+
ds.getSubscriptionKey().add(holder.value.get(0).getSubscriptionKey());
+ subscriptionJoe.deleteSubscription(ds);
+
//tckBusinessMary.deleteMaryPublisherBusiness(authInfoMary);
+ tckTModelMary.deleteMaryPublisherTmodel(authInfoMary);
+
+
tckBusinessServiceJoe.deleteJoePublisherService(authInfoJoe);
+ tckBusinessJoe.deleteJoePublisherBusiness(authInfoJoe);
+ tckTModelJoe.deleteJoePublisherTmodel(authInfoJoe);
+ tckTModelJoe.deleteTModel(authInfoJoe,
TckTModel.JOE_PUBLISHER_TMODEL_SUBSCRIPTION3_TMODEL_KEY,
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3);
+
+ }
+ }
+
+ /**
+ * getBusiness tests joe want's updates on mary's business
+ *
+ * @throws Exception
+ */
+ @Test
+ public void joePublisherUpdate_SMTP_GET_TMODEL_DETAIL() throws
Exception {
+ logger.info("joePublisherUpdate_SMTP_GET_TMODEL_DETAIL");
+ TckCommon.removeAllExistingSubscriptions(authInfoJoe,
subscriptionJoe);
+ Holder<List<Subscription>> holder = null;
+ try {
+ UDDISubscriptionListenerImpl.notifcationMap.clear();
+ UDDISubscriptionListenerImpl.notificationCount = 0;
+ String before = TckCommon.DumpAllTModels(authInfoJoe,
inquiryJoe);
+
+ tckTModelJoe.saveJoePublisherTmodel(authInfoJoe);
+ tckTModelJoe.saveTModels(authInfoJoe,
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3);
+ TModel saveMaryPublisherTmodel =
tckTModelMary.saveMaryPublisherTmodel(authInfoMary);
+
+ tckBusinessJoe.saveJoePublisherBusiness(authInfoJoe);
+
tckBusinessServiceJoe.saveJoePublisherService(authInfoJoe);
+ //Saving the Listener Service
+ tckSubscriptionListenerJoe.saveService(authInfoJoe,
TckSubscriptionListener.LISTENER_SMTP_SERVICE_EXTERNAL_XML, 0, email);
+ //Saving the Subscription
+ holder = new Holder<List<Subscription>>();
+ holder.value = new ArrayList<Subscription>();
+ Subscription sub = new Subscription();
+
sub.setBindingKey("uddi:uddi.joepublisher.com:bindinglistenersmtp");
+
sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(5000));
+ sub.setSubscriptionFilter(new SubscriptionFilter());
+ sub.getSubscriptionFilter().setGetTModelDetail(new
GetTModelDetail());
+
sub.getSubscriptionFilter().getGetTModelDetail().getTModelKey().add(TckTModel.MARY_PUBLISHER_TMODEL_KEY);
+
+ holder.value.add(sub);
+ subscriptionJoe.saveSubscription(authInfoJoe, holder);
+
//tckSubscriptionListenerJoe.saveNotifierSubscription(authInfoJoe,
TckSubscriptionListener.SUBSCRIPTION3_XML);
+ //Changing the service we subscribed to
"JoePublisherService"
+ Thread.sleep(1000);
+ logger.info("updating Mary's tModel ********** ");
+ updateTModel(authInfoMary, saveMaryPublisherTmodel,
publicationMary);
+
+ logger.info("Waiting " +
TckPublisher.getSubscriptionTimeout() + " seconds for delivery");
+ //waiting up to 100 seconds for the listener to notice
the change.
+ boolean found = false;
+ for (int i = 0; i <
TckPublisher.getSubscriptionTimeout(); i++) {
+ Thread.sleep(1000);
+ System.out.print(".");
+ if (fetchMail("a new description") > 0) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ logger.warn("Test failed, dumping business
list");
+ logger.warn("BEFORE " + before);
+ logger.warn("After " +
TckCommon.DumpAllTModels(authInfoJoe, inquiryJoe));
+ Assert.fail("No Notification was sent");
+ }
+
+ } catch (Exception e) {
+ logger.error("No exceptions please.");
+ e.printStackTrace();
+
+ Assert.fail();
+ } finally {
+
//tckSubscriptionListenerJoe.deleteNotifierSubscription(authInfoJoe,
TckSubscriptionListener.SUBSCRIPTION_KEY);
+ DeleteSubscription ds = new DeleteSubscription();
+ ds.setAuthInfo(authInfoJoe);
+
ds.getSubscriptionKey().add(holder.value.get(0).getSubscriptionKey());
+ subscriptionJoe.deleteSubscription(ds);
+
//tckBusinessMary.deleteMaryPublisherBusiness(authInfoMary);
+ tckTModelMary.deleteMaryPublisherTmodel(authInfoMary);
+
+
tckBusinessServiceJoe.deleteJoePublisherService(authInfoJoe);
+ tckBusinessJoe.deleteJoePublisherBusiness(authInfoJoe);
+ tckTModelJoe.deleteJoePublisherTmodel(authInfoJoe);
+ tckTModelJoe.deleteTModel(authInfoJoe,
TckTModel.JOE_PUBLISHER_TMODEL_SUBSCRIPTION3_TMODEL_KEY,
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3);
+
+ }
+ }
+
+ //TODO If a subscriber specifies a maximum number of entries to be
returned with a subscription and the amount of data to be returned exceeds
+//this limit, or if the node determines based on its policy that there are too
many entries to be returned in a single group,
+ //then the node SHOULD provide a chunkToken with results.
+ //TODO If no more results are pending, the value of the chunkToken
MUST be "0".
+ public static void updateTModel(String authInfoMary, TModel
saveMaryPublisherTmodel, UDDIPublicationPortType publicationMary) throws
Exception {
+ saveMaryPublisherTmodel.getDescription().add(new
Description("a new description", null));
+ SaveTModel stm = new SaveTModel();
+ stm.setAuthInfo(authInfoMary);
+ stm.getTModel().add(saveMaryPublisherTmodel);
+ publicationMary.saveTModel(stm);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]