Package com.sun.jini.test.impl.fiddler.joinadmin

Source Code of com.sun.jini.test.impl.fiddler.joinadmin.ModifyLookupAttributes

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

import java.util.logging.Level;

import com.sun.jini.test.spec.discoveryservice.AbstractBaseTest;

import com.sun.jini.test.share.AttributesUtil;
import com.sun.jini.test.share.JoinAdminUtil;

import com.sun.jini.qa.harness.QAConfig;
import com.sun.jini.qa.harness.TestException;

import net.jini.admin.JoinAdmin;
import net.jini.discovery.LookupDiscoveryService;
import net.jini.lookup.entry.ServiceControlled;

import net.jini.core.entry.Entry;

import java.rmi.RemoteException;

/**
* This class determines whether or not the lookup discovery service can
* successfully modify its current set of attributes.
*
* This test adds one or more "well-known" attributes to the service's
* current set and then attempts to modify those attributes.
*
*/
public class ModifyLookupAttributes extends AbstractBaseTest {

    Entry[] attrSetTmpls    = null;
    Entry[] newAttributeSet = null;
    private Entry[] expectedAttributes = null;

    /** Constructs and returns the set of attributes to initially add (can be
     *  overridden by sub-classes)
     */
    Entry[] getInitialAttributeSet() {
        return new Entry[] {new AttributesUtil.TestAttr00("AAA","AAA","AAA"),
                            new AttributesUtil.TestAttr00("BBB","BBB","BBB")
                           };
    }

    /** Constructs and returns the set of attributes that are used in the
     *  matching process for the attributes that will be modified (can be
     *  overridden by sub-classes)
     */
    Entry[] getAttributeSetTemplates() {
        return getInitialAttributeSet();
    }

    /** Constructs and returns the set of attributes that are used to modify
     *  the desired set of attributes (can be overridden by sub-classes)
     */
    Entry[] getTestAttributeSet() {
        return new Entry[] {new AttributesUtil.TestAttr00("ZZZ","ZZZ","ZZZ"),
                            new AttributesUtil.TestAttr00("YYY","YYY","YYY")
                           };
    }

    /** Constructs and returns the set of attributes that are expected to
     *  be remaining from the just-added attributes after those just-added
     *  attributes have been modified in the desired way (can be overridden
     *  by sub-classes)
     */
    Entry[] getAttributesAfterMod() {
        return getTestAttributeSet();
    }

    /** Constructs and returns the set of attributes with which the service
     *  was initially configured
     */
    Entry[] getConfigAttributeSet() {
        return new Entry[] {AttributesUtil.getServiceInfoEntryFromConfig(getConfig()),
                            AttributesUtil.getBasicServiceTypeFromConfig(getConfig())
                           };
    }

    /** Performs actions necessary to prepare for execution of the
     *  current test.
     *
     *  Starts one lookup discovery service, and then constructs the
     *  set of attributes that should be expected after adding and then
     *  modifying a new set of attributes.
     */
    public void setup(QAConfig config) throws Exception {
        super.setup(config);
        Entry[] configAttributes = getConfigAttributeSet();
        newAttributeSet = getTestAttributeSet();

        attrSetTmpls = getAttributeSetTemplates();
        boolean serviceControlled = false;
        if( (attrSetTmpls != null) && (attrSetTmpls.length > 0) ) {
            for(int i=0;i<attrSetTmpls.length;i++) {
                if(attrSetTmpls[i] instanceof ServiceControlled) {
                    serviceControlled = true;
                    break;
                }
            }
        }
        /* Construct the expected attributes set */
        expectedAttributes = configAttributes;
        if(!serviceControlled) {
            Entry[] attrsAfterMod = getAttributesAfterMod();
            if(attrsAfterMod != null) {
                /* Concatenate the original attributes with the attributes
                 * expected to be remaning after modifying the just-added
                 * attributes
                 */
                expectedAttributes =
                     new Entry[configAttributes.length+attrsAfterMod.length];
                for(int i=0;i<configAttributes.length;i++) {
                    expectedAttributes[i] = configAttributes[i];
                }
                for(int i=0;i<attrsAfterMod.length;i++) {
                    expectedAttributes[i+configAttributes.length]
                                                          = attrsAfterMod[i];
                }
            }//endif(attrsAfterMod != null)
        }//endif(!serviceControlled)
        if( (attrSetTmpls == null) || (newAttributeSet == null) ) {
            logger.log(Level.FINE, "expectedAttributes = NullPointerException");
        } else if(serviceControlled) {
            logger.log(Level.FINE,
           "expectedAttributes = "
         + "SecurityException (ServiceControlled)");
        } else {//newAttributeSet != null
            AttributesUtil.displayAttributeSet(expectedAttributes,
                                               "expectedAttrs",
                                               Level.FINE);
        }
    }

    /** Executes the current test by doing the following:
     * 
     *  1. Retrieves the admin instance of the service under test.
     *  2. Through the admin, adds a set of attributes to the service's
     *     current set
     *  3. Constructs the set of attribute template(s) that are used to
     *     select (match) the desired sub-set of the just-added attributes
     *     that will be modified
     *  4. Through the admin, modifies the selected set of just-added
     *     attributes
     *  5. Determines if the set of attributes just modified are
     *     equivalent to the expected set of attributes .
     */
    public void run() throws Exception {
        logger.log(Level.FINE, "run()");
        if(discoverySrvc == null) {
            throw new TestException("could not successfully start service "
          + serviceName);
        }
  JoinAdmin joinAdmin = JoinAdminUtil.getJoinAdmin(discoverySrvc);

  Entry[] initialAttributes = getInitialAttributeSet();
  joinAdmin.addLookupAttributes(initialAttributes);

  Entry[] oldAttributes = joinAdmin.getLookupAttributes();
  AttributesUtil.displayAttributeSet(oldAttributes,
             "oldAttributes",
             Level.FINE);
  Entry[] attrSetTmpls = getAttributeSetTemplates();
  AttributesUtil.displayAttributeSet(attrSetTmpls,
             "attrSetTmpls",
             Level.FINE);
  AttributesUtil.displayAttributeSet(newAttributeSet,
             "newAttributeSet",
             Level.FINE);
  joinAdmin.modifyLookupAttributes(attrSetTmpls,newAttributeSet);
  Entry[] newAttributes = joinAdmin.getLookupAttributes();
  AttributesUtil.displayAttributeSet(newAttributes,
             "newAttributes",
             Level.FINE);
  if (!AttributesUtil.compareAttributeSets(expectedAttributes,
             newAttributes,
             Level.FINE))
  {
      throw new TestException("Attribute sets not equal");
  }
    }
}

TOP

Related Classes of com.sun.jini.test.impl.fiddler.joinadmin.ModifyLookupAttributes

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.