Package org.jscsi.target.scsi

Source Code of org.jscsi.target.scsi.ScsiResponseDataSegmentTest

package org.jscsi.target.scsi;


import org.jscsi.parser.OperationCode;
import org.jscsi.parser.ProtocolDataUnit;
import org.jscsi.parser.ProtocolDataUnitFactory;
import org.jscsi.parser.scsi.SCSICommandParser;
import org.jscsi.target.scsi.cdb.RequestSenseCdb;
import org.jscsi.target.scsi.sense.AdditionalSenseBytes;
import org.jscsi.target.scsi.sense.AdditionalSenseCodeAndQualifier;
import org.jscsi.target.scsi.sense.DescriptorFormatSenseData;
import org.jscsi.target.scsi.sense.ErrorType;
import org.jscsi.target.scsi.sense.FixedFormatSenseData;
import org.jscsi.target.scsi.sense.SenseData;
import org.jscsi.target.scsi.sense.SenseKey;
import org.jscsi.target.scsi.sense.information.FourByteInformation;
import org.jscsi.target.scsi.sense.senseDataDescriptor.SenseDataDescriptor;
import org.jscsi.target.scsi.sense.senseDataDescriptor.senseKeySpecific.FieldPointerSenseKeySpecificData;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;


/**
* This class tests the behavior of a scsi response data segment.
*
* @author Andreas Rain
*
*/
public class ScsiResponseDataSegmentTest {

    /**
     * None-empty data segment
     */

    static ScsiResponseDataSegment nonEmpty;

    @BeforeClass
    public void beforeClass () {

        /**
         * The following part simulates a none-empty ScsiResponseDataSegment. It's copied for the most part from the
         * RequestSenseStage
         */

        final ProtocolDataUnit pdu = new ProtocolDataUnitFactory().create(false, true, OperationCode.LOGIN_REQUEST, "None", "None");

        final SCSICommandParser parser = new SCSICommandParser(pdu);
        parser.setExpectedDataTransferLength(8);

        // get command details in CDB
        final RequestSenseCdb cdb = new RequestSenseCdb(parser.getCDB());

        SenseData senseData;

        if (cdb.getDescriptorFormat()) {
            // descriptor format sense data has been requested

            senseData = new DescriptorFormatSenseData(ErrorType.CURRENT,// errorType
            SenseKey.ILLEGAL_REQUEST,// sense key
            AdditionalSenseCodeAndQualifier.INVALID_FIELD_IN_CDB,// additional
                                                                 // sense
                                                                 // code
                                                                 // and
                                                                 // qualifier
            new SenseDataDescriptor[0]);// sense data descriptors

        } else {
            // fixed format sense data has been requested

            senseData = new FixedFormatSenseData(false,// valid
            ErrorType.CURRENT,// error type
            false,// file mark
            false,// end of medium
            false,// incorrect length indicator
            SenseKey.ILLEGAL_REQUEST,// sense key
            new FourByteInformation(),// information
            new FourByteInformation(),// command specific
                                      // information
            AdditionalSenseCodeAndQualifier.INVALID_FIELD_IN_CDB,// additional
                                                                 // sense
                                                                 // code
                                                                 // and
                                                                 // qualifier
            (byte) 0,// field replaceable unit code
            new FieldPointerSenseKeySpecificData(true,// senseKeySpecificDataValid
            true,// commandData (i.e. invalid field in CDB)
            true,// bitPointerValid
            3,// bitPointer
            8),// fieldPointer,// sense key specific data, only
               // report first problem
            new AdditionalSenseBytes());// additional sense bytes
        }

        nonEmpty = new ScsiResponseDataSegment(senseData, parser.getExpectedDataTransferLength());
    }

    @Test
    public void testNoneEmpty () {
        nonEmpty.serialize();
    }

    @Test
    public void testEmpty () {
        ScsiResponseDataSegment.EMPTY_DATA_SEGMENT.serialize();
    }

}
TOP

Related Classes of org.jscsi.target.scsi.ScsiResponseDataSegmentTest

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.