Package org.jboss.jbossts.qa.ArjunaCore.AbstractRecord.client

Source Code of org.jboss.jbossts.qa.ArjunaCore.AbstractRecord.client.ErrorClient04

/*
* JBoss, Home of Professional Open Source
* Copyright 2007, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags.
* See the copyright.txt in the distribution for a
* full listing of individual contributors.
* This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions
* of the GNU Lesser General Public License, v. 2.1.
* This program is distributed in the hope that it will be useful, but WITHOUT A
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public License,
* v.2.1 along with this distribution; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA  02110-1301, USA.
*
* (C) 2005-2006,
* @author JBoss Inc.
*/
/*
* Created by IntelliJ IDEA.
* User: peter craddock
* Date: 12-Mar-02
* Time: 14:19:06
*/
package org.jboss.jbossts.qa.ArjunaCore.AbstractRecord.client;

import com.arjuna.ats.arjuna.coordinator.ActionStatus;
import com.arjuna.ats.arjuna.coordinator.TwoPhaseOutcome;
import org.jboss.jbossts.qa.ArjunaCore.AbstractRecord.impl.ErrorService01;
import org.jboss.jbossts.qa.ArjunaCore.Utils.BaseTestClient;

import java.util.ArrayList;

/**
* This is a template to test the current outcome is
* from the tests. we will use this to create a config file generator.
*/
public class ErrorClient04 extends BaseTestClient
{
  public static void main(String[] args)
  {
    ErrorClient04 test = new ErrorClient04(args);
  }

  private ErrorClient04(String[] args)
  {
    super(args);
  }

  public void Test()
  {
    /////////////////////////////////////////////////////////////////////////////////////////
    // set up values needed for test
    /////////////////////////////////////////////////////////////////////////////////////////
    //setup values
    mMaxInt = 12;
    mMaxValue = 11;
    try
    {
      setNumberOfResources(getNumberOfArgs());
      setCrashPoint(getNumberOfArgs() - 1);

      createArrayList();
    }
    catch (Exception e)
    {
      Fail("Error in ErrorClient04.test() :", e);
    }

    /////////////////////////////////////////////////////////////////////////////////////////
    // prepare output
    /////////////////////////////////////////////////////////////////////////////////////////

    try
    {
      // create array to hold display results
      displayarray = new ArrayList();
      String[] content = new String[mNumberOfResources + 1];
      String s = "";

      //headers
      for (int j = 0; j < mNumberOfResources; j++)
      {
        s = "Resource :" + (j + 1);
        content[j] = pad(s);
      }
      s = "Final Result";
      content[mNumberOfResources] = pad(s);
      displayarray.add(content);
    }
    catch (Exception e)
    {
      Fail("Error in ErrorClient04.test() :", e);
    }

    /////////////////////////////////////////////////////////////////////////////////////////
    //now perform tests and save results in the above array
    /////////////////////////////////////////////////////////////////////////////////////////
    try
    {
      mCrashPoint = 1;
      //crash type not used in this test
      mCrashType = 1;

      //perform tests
      int testresources = 0;
      int[] mCrashArray;
      for (int i = 0; i < mPermutaionsList.size(); i++)
      {
        mCrashArray = (int[]) mPermutaionsList.get(i);
        testresources = mCrashArray.length;

        ErrorService01 mService = new ErrorService01(testresources);
        int mFinalValue = 0;

        createTx();
        try
        {
          begin();
          mService.setupOper();
          mService.setCrash(mCrashPoint, mCrashArray);
          mFinalValue = intCommit();
        }
        catch (Exception e)
        {
          Fail("Error doing work", e);
        }

        //save the values for display later
        String[] content = new String[mNumberOfResources + 1];
        String s = "";
        for (int x = 0; x < mNumberOfResources + 1; x++)
        {
          int value = -1;
          s = " ";
          if (x < mCrashArray.length)
          {
            value = mCrashArray[x];
            s = TwoPhaseOutcome.stringForm(value);
          }
          content[x] = pad(s);

          if (x == mNumberOfResources)
          {
            s = ActionStatus.stringForm(mFinalValue);
            content[x] = pad(s);
          }
        }
        displayarray.add(content);
      }
    }
    catch (Exception e)
    {
      Fail("Error in ErrorClient04.test() :", e);
    }

    // now display saved data
    displayArray();
  }

  private void createArrayList()
  {
    int numberoftests = 0;
    int displaycounter = 0;
    mPermutaionsList = new ArrayList();
    for (int j = 0; j < mNumberOfResources; j++)
    {
      createIgnoreList(j + 1);
      numberoftests = mMaxInt - mIgnorList.length;
      for (int perms = 0; perms < j; perms++)
      {
        numberoftests = numberoftests * (mMaxInt - mIgnorList.length);
      }
      //setupCounterArray(j + 1);
      for (int i = 0; i < numberoftests; i++)
      {
        int[] last = null;
        if (i != 0 || j != 0)
        {
          last = (int[]) mPermutaionsList.get(displaycounter - 1);
        }

        mPermutaionsList.add(createArrays(j + 1, last));
        //turn this off now its working
        //display(displaycounter);
        displaycounter++;
      }
    }
  }

  private int[] createArrays(int size, int[] last)
  {
    int[] crash = new int[size];
    boolean increase = true;
    int value = -1;
    int testvalue = 0;

    if (last == null)
    {
      value = nextValidValue(value);
      crash[0] = value;
      return crash;
    }
    else
    {
      //if this happend new array size
      if (last.length != crash.length)
      {
        for (int i = 0; i < crash.length; i++)
        {
          value = nextValidValue(-1);
          crash[i] = value;
        }
        return crash;
      }
      for (int i = crash.length - 1; i > -1; i--)
      {
        value = last[i];

        if (increase)
        {
          value = nextValidValue(value);
        }

        testvalue = value;

        if (value > mMaxValue)
        {
          value = nextValidValue(-1);
        }

        if (value != mMaxValue + 1)
        {
          increase = false;
        }

        if (testvalue == mMaxValue + 1)
        {
          increase = true;
        }

        crash[i] = value;
      }
    }
    return crash;
  }

  private int nextValidValue(int value)
  {
    value++;
    for (int i = 0; i < mIgnorList.length; i++)
    {
      if (value == mIgnorList[i])
      {
        value++;
        nextValidValue(value);
      }
    }
    return value;
  }

  private void createIgnoreList(int resources)
  {
    //make sure mIgnoreList is not null
    mIgnorList = new int[0];
    if (mCrashPoint == 1)
    {
      if (resources == 1)
      {
        mIgnorList = new int[3];
        mIgnorList[0] = TwoPhaseOutcome.PREPARE_OK;
        mIgnorList[1] = TwoPhaseOutcome.PREPARE_NOTOK;
        mIgnorList[2] = TwoPhaseOutcome.PREPARE_READONLY;
      }
      else
      {
        mIgnorList = new int[4];
        mIgnorList[0] = TwoPhaseOutcome.PREPARE_OK;
        mIgnorList[1] = TwoPhaseOutcome.PREPARE_NOTOK;
        mIgnorList[2] = TwoPhaseOutcome.PREPARE_READONLY;
        mIgnorList[3] = TwoPhaseOutcome.ONE_PHASE_ERROR;
      }
    }
  }

  private String pad(String s)
  {
    int size = 40;
    String out = s;
    for (int i = s.length(); i < size; i++)
    {
      out += " ";
    }
    return out;
  }

  private void displayArray()
  {
    for (int i = 0; i < displayarray.size(); i++)
    {
      String[] displaydata = null;
      String displayValue = "";
      displaydata = (String[]) displayarray.get(i);

      for (int j = 0; j < displaydata.length; j++)
      {
        displayValue += displaydata[j];
      }

      System.err.println(displayValue);
    }
  }

  /**
   * Helper method for debugging createarray function.
   */
  private void display(int i)
  {
    int[] values = (int[]) mPermutaionsList.get(i);
    String s = "";
    for (int j = 0; j < values.length; j++)
    {
      s += values[j] + ", ";
    }
    Debug(s);
  }

  private int mMaxInt = 12;
  private int mMaxValue = 11;
  private ArrayList mPermutaionsList;
  private ArrayList displayarray;
  private int[] mIgnorList = null;

}
TOP

Related Classes of org.jboss.jbossts.qa.ArjunaCore.AbstractRecord.client.ErrorClient04

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.