Package com.sun.jini.test.impl.mercury

Source Code of com.sun.jini.test.impl.mercury.MailboxTestBase

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sun.jini.test.impl.mercury;

import java.util.logging.Level;

// Test harness specific classes


import java.rmi.RemoteException;


import com.sun.jini.constants.TimeConstants;
import com.sun.jini.qa.harness.TestException;
import com.sun.jini.test.share.TestBase;
import net.jini.config.Configuration;
import net.jini.config.ConfigurationException;
import net.jini.security.BasicProxyPreparer;
import net.jini.security.ProxyPreparer;

import net.jini.admin.Administrable;
import net.jini.event.EventMailbox;
import net.jini.event.MailboxRegistration;
import net.jini.event.MailboxPullRegistration;
import net.jini.event.PullEventMailbox;
import net.jini.core.event.RemoteEventListener;
import net.jini.core.lease.Lease;
import net.jini.core.lease.LeaseDeniedException;



public abstract class MailboxTestBase extends TestBase {

    protected static final String MAILBOX_PROPERTY_NAME = "com.sun.jini.test.impl.mercury.serviceInterface";   
    protected static final String MAILBOX_IF_NAME = EventMailbox.class.getName();
    protected static final String PULL_MAILBOX_IF_NAME = PullEventMailbox.class.getName();
   
    protected void parse() throws Exception {
   super.parse();
    }

    protected EventMailbox[] getMailboxes(int count)
  throws java.io.IOException, TestException 
    {
  Class[] classes = new Class[count];
  EventMailbox[] mbs = new EventMailbox[count];
  int i = 0;

  for (i = 0; i < count; i++) {
      classes[i] = EventMailbox.class;
  }

  specifyServices(classes);

  for (i = 0; i < count; i++) {
      mbs[i] = (EventMailbox)services[i];
  }

  return mbs;
    }
   
    protected PullEventMailbox[] getPullMailboxes(int count)
  throws java.io.IOException, TestException 
    {
  Class[] classes = new Class[count];
  PullEventMailbox[] mbs = new PullEventMailbox[count];
  int i = 0;

  for (i = 0; i < count; i++) {
      classes[i] = PullEventMailbox.class;
  }

  specifyServices(classes);

  for (i = 0; i < count; i++) {
      mbs[i] = (PullEventMailbox)services[i];
  }

  return mbs;
    }
   
    protected EventMailbox getMailbox() throws java.io.IOException, TestException {
  specifyServices(new Class[]{EventMailbox.class});
  EventMailbox mb = (EventMailbox)services[0];

        if (mb == null)
            throw new TestException ("Got null ref for EventMailbox service");
        logger.log(Level.INFO, "Got reference to EventMailbox service: " + mb);

        return mb;
    }

    protected PullEventMailbox getPullMailbox() throws java.io.IOException, TestException {
  specifyServices(new Class[]{PullEventMailbox.class});
  PullEventMailbox mb = (PullEventMailbox)services[0];

        if (mb == null)
            throw new TestException ("Got null ref for PullEventMailbox service");
        logger.log(Level.INFO, "Got reference to PullEventMailbox service: " + mb);

        return mb;
    }
   
    protected EventMailbox getConfiguredMailbox() throws java.io.IOException, TestException {
  String mbType =
            getConfig().getStringConfigVal(
    MAILBOX_PROPERTY_NAME,
    MAILBOX_IF_NAME);

  logger.log(Level.INFO, "Getting ref to {0}", mbType);
  EventMailbox mb = null;
  if (mbType.equals(MAILBOX_IF_NAME)) {
      mb = getMailbox();
  } else if (mbType.equals(PULL_MAILBOX_IF_NAME)) {
            mb = getPullMailbox();
  } else {
            throw new TestException(
    "Unsupported mailbox type requested" + mbType);
  }
        return mb;
    }
   
    protected Object getMailboxAdmin(EventMailbox mb)
        throws java.io.IOException, TestException, ConfigurationException
    {
   
  logger.log(Level.INFO, "\tCalling getMailboxAdmin()");
  Object admin = ((Administrable)mb).getAdmin();
  if (admin == null) {
      throw new TestException(
    "Could not get service's Administrable interface");
  }

        Configuration serviceConf = getConfig().getConfiguration();
  ProxyPreparer preparer = new BasicProxyPreparer();
  if (serviceConf instanceof com.sun.jini.qa.harness.QAConfiguration) {
      preparer =
    (ProxyPreparer) serviceConf.getEntry("test",
                 "mercuryAdminPreparer",
                 ProxyPreparer.class);
  }
  logger.log(Level.INFO, "\tadmin proxy preparer: " + preparer);
  admin = preparer.prepareProxy(admin);
  logger.log(Level.INFO, "\tPrepared admin proxy: " + admin);
 
  return admin;
   
   
    protected RemoteEventListener getMailboxListener(MailboxRegistration mr)
        throws java.io.IOException, TestException, ConfigurationException
    {
   
  logger.log(Level.INFO, "\tCalling getMailboxListener()");
  if (mr == null) {
      throw new TestException(
    "MailboxRegistration argument cannot be null");
  }

        Configuration serviceConf = getConfig().getConfiguration();
        ProxyPreparer preparer = new BasicProxyPreparer();
        if (serviceConf instanceof com.sun.jini.qa.harness.QAConfiguration) {
            preparer =
    (ProxyPreparer) serviceConf.getEntry("test",
                 "mercuryListenerPreparer",
                 ProxyPreparer.class);
        }
  logger.log(Level.INFO, "\tmailbox listener preparer: " + preparer);
  RemoteEventListener proxy =
      (RemoteEventListener) preparer.prepareProxy(mr.getListener());
  logger.log(Level.INFO, "\tPrepared mailbox listener proxy: " + proxy);
 
  return proxy;
   
   
    protected RemoteEventListener getPullMailboxListener(MailboxPullRegistration mr)
        throws java.io.IOException, TestException, ConfigurationException
    {
   
  logger.log(Level.INFO, "\tCalling getPullMailboxListener()");
  if (mr == null) {
      throw new TestException(
    "MailboxPullRegistration argument cannot be null");
  }

        Configuration serviceConf = getConfig().getConfiguration();
        ProxyPreparer preparer = new BasicProxyPreparer();
        if (serviceConf instanceof com.sun.jini.qa.harness.QAConfiguration) {
            preparer =
    (ProxyPreparer) serviceConf.getEntry("test",
                 "mercuryListenerPreparer",
                 ProxyPreparer.class);
        }
  logger.log(Level.INFO, "\tmailbox listener preparer: " + preparer);
  RemoteEventListener proxy =
      (RemoteEventListener) preparer.prepareProxy(mr.getListener());
  logger.log(Level.INFO, "\tPrepared mailbox listener proxy: " + proxy);
 
  return proxy;
   
   
    protected Lease getMailboxLease(MailboxRegistration mr)
        throws java.io.IOException, TestException, ConfigurationException
    {
   
  logger.log(Level.INFO, "\tCalling getMailboxLLease()");
  if (mr == null) {
      throw new TestException(
    "MailboxRegistration argument cannot be null");
  }

        Configuration serviceConf = getConfig().getConfiguration();
        ProxyPreparer preparer = new BasicProxyPreparer();
        if (serviceConf instanceof com.sun.jini.qa.harness.QAConfiguration) {
            preparer =
    (ProxyPreparer) serviceConf.getEntry("test",
                 "mercuryLeasePreparer",
                 ProxyPreparer.class);
        }
  logger.log(Level.INFO, "\tmailbox lease preparer: " + preparer);
  Lease proxy =
      (Lease) preparer.prepareProxy(mr.getLease());
  logger.log(Level.INFO, "\tPrepared mailbox lease proxy: " + proxy);
 
  return proxy;
   

    protected Lease getPullMailboxLease(MailboxPullRegistration mr)
        throws java.io.IOException, TestException, ConfigurationException
    {
   
  logger.log(Level.INFO, "\tCalling getPullMailboxLease()");
  if (mr == null) {
      throw new TestException(
    "MailboxPullRegistration argument cannot be null");
  }

        Configuration serviceConf = getConfig().getConfiguration();
        ProxyPreparer preparer = new BasicProxyPreparer();
        if (serviceConf instanceof com.sun.jini.qa.harness.QAConfiguration) {
            preparer =
    (ProxyPreparer) serviceConf.getEntry("test",
                 "mercuryLeasePreparer",
                 ProxyPreparer.class);
        }
  logger.log(Level.INFO, "\tmailbox lease preparer: " + preparer);
  Lease proxy =
      (Lease) preparer.prepareProxy(mr.getLease());
  logger.log(Level.INFO, "\tPrepared mailbox lease proxy: " + proxy);
 
  return proxy;
   
   
    protected MailboxRegistration[] getRegistrations(EventMailbox mb,
                 long[] durations)
  throws RemoteException, TestException, ConfigurationException
    {
  int count = durations.length;
  MailboxRegistration[] mbrs = new MailboxRegistration[count];
  for (int i = 0; i < count; i++) {
      mbrs[i] = getRegistration(mb, durations[i]);
  }
  return mbrs;
    }

    protected MailboxPullRegistration[] getPullRegistrations(
        PullEventMailbox mb, long[] durations)
  throws RemoteException, TestException, ConfigurationException
    {
  int count = durations.length;
  MailboxPullRegistration[] mbrs = new MailboxPullRegistration[count];
  for (int i = 0; i < count; i++) {
      mbrs[i] = getPullRegistration(mb, durations[i]);
  }
  return mbrs;
    }
   
    protected MailboxRegistration getRegistration(EventMailbox mb,
              long duration)
  throws RemoteException, TestException, ConfigurationException
    {
  MailboxRegistration mr = null;
  try {
       mr = mb.register(duration);
  } catch (LeaseDeniedException lde) {
       throw new TestException ("MailboxRegistration request was denied.");
  }
  if (mr == null)
       throw new TestException ("Got null ref for MailboxRegistration object");
  logger.log(Level.INFO,
       "Got reference to MailboxRegistration object: " + mr);
 
        Configuration serviceConf = getConfig().getConfiguration();
        ProxyPreparer preparer = new BasicProxyPreparer();
        if (serviceConf instanceof com.sun.jini.qa.harness.QAConfiguration) {
            preparer =
    (ProxyPreparer) serviceConf.getEntry("test",
                 "mercuryRegistrationPreparer",
                 ProxyPreparer.class);
        }
  logger.log(Level.INFO, "\tregistration proxy preparer: " + preparer);
  mr = (MailboxRegistration)preparer.prepareProxy(mr);
  logger.log(Level.INFO, "\tPrepared registration proxy: " + mr);
 
  return mr;
    }

    protected MailboxPullRegistration getPullRegistration(
        PullEventMailbox mb, long duration)
  throws RemoteException, TestException, ConfigurationException
    {
  MailboxPullRegistration mr = null;
  try {
       mr = mb.pullRegister(duration);
  } catch (LeaseDeniedException lde) {
       throw new TestException ("MailboxPullRegistration request was denied.");
  }
  if (mr == null)
       throw new TestException ("Got null ref for MailboxPullRegistration object");
  logger.log(Level.INFO,
       "Got reference to MailboxPullRegistration object: " + mr);
 
        Configuration serviceConf = getConfig().getConfiguration();
        ProxyPreparer preparer = new BasicProxyPreparer();
        if (serviceConf instanceof com.sun.jini.qa.harness.QAConfiguration) {
            preparer =
    (ProxyPreparer) serviceConf.getEntry("test",
                 "mercuryRegistrationPreparer",
                 ProxyPreparer.class);
        }
  logger.log(Level.INFO, "\tregistration proxy preparer: " + preparer);
  mr = (MailboxPullRegistration)preparer.prepareProxy(mr);
  logger.log(Level.INFO, "\tPrepared registration proxy: " + mr);
 
  return mr;
    }

    protected void checkLease(Lease l, long duration) throws TestException {
  if (!leaseRequestOK(l, duration))
      throw new TestException ("Lease request for " + duration + "  not granted");
  logger.log(Level.INFO, "Lease request for " + duration + "  granted");
    }

    private boolean leaseRequestOK(Lease l, long durationRequest) {
        // Check for "any" request
  if(durationRequest == Lease.ANY) // any lease is acceptable
      return true;

  long actualExpiration = l.getExpiration();
  long desiredExpiration = System.currentTimeMillis() + durationRequest;

  // Check for "addition" overflow
  if (desiredExpiration < 0)
      desiredExpiration =  Long.MAX_VALUE;

        return (actualExpiration <= desiredExpiration);
    }
}
TOP

Related Classes of com.sun.jini.test.impl.mercury.MailboxTestBase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.