Package com.sun.jini.test.impl.start

Source Code of com.sun.jini.test.impl.start.SharedGroupProxyEqualityTest

/*
* 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.start;

import java.util.logging.Level;

import com.sun.jini.qa.harness.QAConfig;
import com.sun.jini.qa.harness.QATest;
import com.sun.jini.start.ServiceStarter;
import com.sun.jini.start.SharedGroup;
import com.sun.jini.qa.harness.TestException;

import java.io.*;
import java.rmi.*;

import net.jini.admin.Administrable;
import net.jini.event.EventMailbox;

/**
* Verifies that proxies for the same shared group service
* are equal and that proxies for different shared groups
* are not equal
*/
public class SharedGroupProxyEqualityTest extends QATest {

    public void run() throws Exception {
  logger.log(Level.INFO, "" + ":run()");

        /*
         * To perform all equals tests we require 4 different proxy
         * instances. Two from each service.
         */
        SharedGroup group_proxy = null;
        SharedGroup group_proxy_dup = null;
        SharedGroup bogus_group_proxy = null;
  final String serviceName = "com.sun.jini.start.SharedGroup";
  MarshalledObject marshObj01 =
    new MarshalledObject(manager.startService(serviceName));
        MarshalledObject marshObj02 =
    new MarshalledObject(manager.startService(serviceName));

        group_proxy = (SharedGroup) marshObj01.get();
        group_proxy_dup = (SharedGroup) marshObj01.get();
        bogus_group_proxy = (SharedGroup) marshObj02.get();

  // Check proxies
  if (group_proxy == null ||
      group_proxy_dup == null ||
      bogus_group_proxy == null) {
      throw new TestException( "Could not create group proxy");
      }

        // Object Equality test
        if (!proxiesEqual(group_proxy, group_proxy_dup)) {
      throw new TestException( "Proxies were not equal");
  }
  logger.log(Level.INFO, "Service proxies are equal");

        // Hashcode equality test
  if (group_proxy.hashCode() != group_proxy_dup.hashCode()) {
      throw new TestException( "Equivalent service proxies " +
    "have different hashcodes.");
  }
  logger.log(Level.INFO, "Service proxy hashcodes are equal");

        // Check bogus proxy against old references
        if ( (proxiesEqual(group_proxy, bogus_group_proxy))     ||
             (proxiesEqual(group_proxy_dup, bogus_group_proxy)) ) {
      throw new TestException( "Service proxies equal bogus "
    + "group proxy");
  }
  logger.log(Level.INFO, "Bogus proxy does not equal previous references");

  /*
   * Note: hascodes can be equal even though the objects aren't, so
   * it's not checked.
   */
  return;
    }

    private static boolean proxiesEqual(Object a, Object b) {
  //Check straight equality
  if (!a.equals(b))
      return false;
  //Check symmetrical equality
  if (!b.equals(a))
      return false;
  //Check reflexive equality
  if (!a.equals(a))
      return false;
  if (!b.equals(b))
      return false;
  //Check consistency
  if (a.equals(null) || b.equals(null))
      return false;

        return true
    }
}
  
TOP

Related Classes of com.sun.jini.test.impl.start.SharedGroupProxyEqualityTest

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.