Git Product home page Git Product logo

kinetic-java's Introduction

Java API and Simulator for the Kinetic Open Storage Platform.

Overview

Project components:

  • kinetic-client (Java client API and implementation of Kinetic Protocol)
  • kinetic-simulator (Kinetic device simulator)
  • kinetic-common (Common library for kinetic-client and kinetic-simulator)
  • kinetic-test (Test Suite for simulator and kinetic devices)

Suggested development environment

Quick start

Download and build

  cd ~/workspace
  git clone https://github.com/Kinetic/kinetic-java.git
  mvn clean package
  
  # By default, simulator uses "USER-HOME/kinetic" as its data store folder.
  # To build, the "workspace" must be located in a separate folder as the data store folder.

Start the simulator

Start with simulator jar:

  cd ~/workspace
  java -jar kinetic-simulator/target/kinetic-simulator-"Version"-SNAPSHOT-jar-with-dependencies.jar    

where "Version" above is the build version number (such as 3.0.7).

Start with script (If configuring tcp_port, tls_port and Kinetic_home, type script -help for usage help):

  cd ~/workspace
  ./bin/startSimulator.sh

Ping the simulator

cd ~/workspace

# ping <device-ip>, 
# e.g.:
./bin/ping.sh 127.0.0.1 

Run test suite against a remote instance

  1. Run the integration tests against the simulator with specified max memory: mvn test -DargLine="-Xmx500M"
  2. Run the integration tests against the remote instance at a particular host: mvn test -DRUN_AGAINST_EXTERNAL=true -DKINETIC_HOST=1.2.3.4

Admin client command usage

  1. Download, build, and start simulator as described in Quick Start section above
  2. Run admin CLI
   cd ~/workspace
   ./bin/kineticadmin.sh -help

Erase data in the Simulator

  • The simulator should be running, default port for TCP is 8123, SSL/TLS port is 8443
  ./bin/kineticadmin.sh -instanterase

Simulator and Java API examples

Examples are located at the following directory.

"workspace"/kinetic-test/src/test/java/com/seagate/kinetic/example

Kinetic Java API Javadoc location

To browse Javadoc: http://kinetic.github.io/kinetic-java/

kinetic-java runtime on maven central

Run smoke tests against a remote instance

  1. Download, build, and start simulator as described in Quick Start section above
  2. cd "workspace"/bin
  3. sh runSmokeTests.sh [-host host_ip] [-port port] [-tlsport tlsport] [-home kinetic_home]

Kinetic tools and console

The kinetic tools and console provide tools to discover, setup, configure, and monitor Kinetic devices.

[https://github.com/Seagate/kinetic-java-tools] (https://github.com/Seagate/kinetic-java-tools)

kinetic-java's People

Contributors

chenchongli avatar chiaming2000 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kinetic-java's Issues

Simulator seems not giving all the message types in getlog statistic operation

Hi,
With regard to getlog statistic, server seems not giving all the message types, including
FLUSHALLDATA, PINOP, MEDIASCAN, MEDIAOPTIMIZE, START_BATCH, END_BATCH, ABORT_BATCH.
Since kinetic.proto didn’t explicitly mention this part, so is it based on server's implementation or should server include all the message types here?
Thanks in advance!

~/kinetic-java# ./bin/kineticAdmin.sh -getlog -type statistic
MessageType: PUT
Count: 3071
Bytes: 12993558
MessageType: GET
Count: 2038
Bytes: 9717489
MessageType: DELETE
Count: 4428
Bytes: 523836
MessageType: GETPREVIOUS
Count: 33
Bytes: 4401
MessageType: GETNEXT
Count: 33
Bytes: 4390
MessageType: GETKEYRANGE
Count: 217
Bytes: 52393
MessageType: GETVERSION
Count: 0
Bytes: 0
MessageType: SECURITY
Count: 104
Bytes: 12060
MessageType: SETUP
Count: 15
Bytes: 1866
MessageType: GETLOG
Count: 27
Bytes: 1058601
MessageType: PEER2PEERPUSH
Count: 4
Bytes: 729

Question on field "version" of EntryMetaData

Hello community! I am interested in storing multiple versions of Entry objects. More specifically, instead of overwriting an object every time that it needs update, I would like to have one more version of that Entry instance.

Definitely, one way is forming a pattern in the key field which involves the actual key and the version of the object.

However, there is also the byte[] field "version" in EntryMetaData. I haven't managed to understand how it is used, though. I tried some examples but I end up with VersionMismatchException. Could someone describe the use case of the field "version"? It may fit in my case.

Thank you, Christos.

serialNumber should be unique

Typically, I'm using a bunch of simulators running in a tmux. Unfortunately, the serialNumber is always the same, which prevents me from writing any code that depends on the serialNumber as sort of primary key.

It would be nice if the serialNumber was always different (or, better, if it was stored in the home directory so it survives a (simulated) restart).

serial_number and world_wide_name should be unique

The previous fix for this issue (see #5 and 06f0103 ) is insufficient.

In my case I have 2 kinetic simulators running for which the following is true:

  • they have the same ip (127.0.0.1)
  • they are started on the same port (on different nodes)
  • they are started with the same home dir

this sadly enough results in the same world_wide_name (and serial_number) for different instances of the simulator.

One way to fix it would be generating a unique id (guid/uuid) once and persisting it in the home dir of the node. Or you could grab some piece of unique info about the node from somewhere (such as the actual ip address, or the mac address of one of the nics or ...)

The current behaviour is interfering with my test automation... but I can work around it (e.g. by having different home dirs for the simulators on different nodes)

large messages over TLS

I created this issue (kinetic c):
Kinetic/kinetic-c#53

Essentially, large messages over TLS seem to be problematic when using the real disks.
Is there someone who could try this with their disks?

p2p push behaviour

In p2p push from drive A to drive B, if a key is specified in the list to push,
but not present at A, there is no exception, it's just skipped.
Is this intended behaviour? (we tested the simulator, will test the real thing shortly)

Already in batch mode

Hi, should a client ever recieve this message from the server?
https://github.com/Seagate/kinetic-java/blob/master/kinetic-simulator/src/main/java/com/seagate/kinetic/simulator/internal/BatchOperationHandler.java#L80

Or can it be considered an internal error if I do see it?

A look at the code seems to suggest that
https://github.com/Seagate/kinetic-java/blob/master/kinetic-simulator/src/main/java/com/seagate/kinetic/simulator/internal/SimulatorEngine.java#L457
should wait until the current batch is finished such that when the init call in BatchOperationHandler should only be done when no other batch is active, unfortunately it doesn't exactly work like that...

heartbeatMonitor.sh is can't specify network interface.

eth2 has been detected . But I want to use eth0.
heartbeatMonitor.sh is command option of "-Dkinetic.net.interface=eth0" not supported.

$ cat kinetic-java/bin/heartbeatMonitor.sh | tail -n1
exec "$JAVA" -classpath "$CLASSPATH" com.seagate.kinetic.example.heartbeat.rest.RestHeartbeatService "$@"
$ kinetic-java/bin/heartbeatMonitor.sh
CLASSPATH=/usr/lib/jvm/jre/lib/tools.jar:/opt/kinetic-java/kinetic-test/target/test-classes:/opt/kinetic-java/kinetic-test/target/kinetic-test-0.8.0.5-SNAPSHOT-jar-with-dependencies.jar:/opt/kinetic-java/kinetic-test/target/kinetic-test-0.8.0.5-SNAPSHOT.jar:/opt/kinetic-java/kinetic-test/target/smoke-tests.jar
Aug 07, 2015 1:13:55 AM com.seagate.kinetic.common.lib.NetUtil findMulticastNetworkInterface
INFO: found interface that supports multicast: eth2
Aug 07, 2015 1:13:55 AM com.seagate.kinetic.monitor.HeartbeatListener init
INFO: using network interface: eth2

mvn build fails when checked out into a directory named "kinetic"?

I'm seeing some weird behavior. Whenever I check out kinetic-java into a directory named "kinetic" in my home directory (Linux), building the project with 'mvn clean package' fails. As a side effect, the stuff inside the kinetic-java disappears. If checked out into, e.g., /tmp/kinetic, this doesn't happen. Tried it on two different machines, and with different users. Behavior is the same.

UDP multicast various levels of verbosity.

Both simulators and the real drives perform regular UDP multicasts to announce their availability.
However, they seem to have varying attribute sets.
The json for the simulator looks like this:

{ "firmware_version":"0.8.0.4-SNAPSHOT",
    "manufacturer":"Seagate",
    "model":"Simulator",
    "network_interfaces":[{"ipv4_addr":"....", "mac_addr":".....","name":"..."}, ...],
    "port":8000,
    "protocol_version":"3.0.6",
    "serial_number":"S810200476",
    "tlsPort":9000,
    "world_wide_name":"0c5dfdf2-2b52-4290-a922-f7c42a1e6e8d"
}

The set of included attributes differs between various drives.
The most succinct set I've been able to capture is this:

{"network_interfaces":[{"ipv4_addr":"...", "ipv6_addr":"...", "mac_addr":"...","name":"..."},...],
 "port":8123,
 "tlsPort":8443}

This raises the question: what is the current set of attributes that is guaranteed to be present?
We are especially interested in the world_wide_name name field. If that's not present we need to connect to the drive to establish its identity.

Seagate's Kinetic Platform OCP Meetup at EVault-San Francisco (7/23/2014)

Hi All,

Seagate will be hosting an OCP Meetup to discuss the opportunities of the new Key/Value interface.

We have confirmed the time and location for the OCP Meetup about the Kinetic Open Storage Platform:

Address:
EVault HQ
201 3rd Street Suite 400
San Francisco, CA 94103
Time:
July 23rd, 2014
4:00 pm - 8:00 pm PDT
Cost:
Free, just register below!

If you would like to attend this Meetup, please register at the following link, as there are a limited number of attendees allowed:

https://www.eventbrite.com/e/seagate-kinetic-platform-ocp-meetup-july-23rd-2014-tickets-12226964179

Food and drinks will be provided. We are still looking for anyone who would like to sponsor hosting food and drinks for this event.

The tentative schedule is shown below:
Overview of Kinetic Technology
Introduction to Kinetic API Contents
Kinetic Demo with real and virtual drives
Software solutions panel (Discussion about Swift, HDFS, Scality, etc.)
Solution builders presentation/discussion (Discussion about Sanmina, Supermicro, Hyve, etc.)
Open discussion about potential community contributions

We will work on refining the details of the schedule within the next week.We are still open to specific discussion topics you would like us to incorporate into our schedule.

There were suggestions of starting the Meetup earlier to accommodate for Eastcoasters. Unfortunately, this selected times seems to work best for those in the Westcoast to attend without having to take time off work.

For those not able to attend in person, you will be able to join virtually via Webex.

java.lang.OutOfMemoryError: Java heap space

While using the C++ client to fetch a keyrange, I get this exception:

Exception in thread "Simulator-16" java.lang.OutOfMemoryError: Java heap space
    at com.google.protobuf.ByteString.copyFrom(ByteString.java:192)
    at com.google.protobuf.CodedInputStream.readBytes(CodedInputStream.java:324)
    at com.seagate.kinetic.proto.KineticDb$Versioned.<init>(KineticDb.java:131)
    at com.seagate.kinetic.proto.KineticDb$Versioned.<init>(KineticDb.java:68)
    at com.seagate.kinetic.proto.KineticDb$Versioned$1.parsePartialFrom(KineticDb.java:164)
    at com.seagate.kinetic.proto.KineticDb$Versioned$1.parsePartialFrom(KineticDb.java:159)
    at com.seagate.kinetic.proto.KineticDb$Versioned$Builder.mergeFrom(KineticDb.java:1304)
    at com.seagate.kinetic.proto.KineticDb$Versioned$Builder.mergeFrom(KineticDb.java:1184)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:337)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:267)
    at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom(AbstractMessageLite.java:170)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:882)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:267)
    at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom(AbstractMessageLite.java:161)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:875)
    at com.seagate.kinetic.simulator.persist.KVValue.<init>(KVValue.java:35)
    at com.seagate.kinetic.simulator.persist.leveldb.LevelDbStore.getRange(LevelDbStore.java:395)
    at com.seagate.kinetic.simulator.persist.leveldb.LevelDbStore.getRange(LevelDbStore.java:59)
    at com.seagate.kinetic.simulator.persist.RangeOp.operation(RangeOp.java:125)
    at com.seagate.kinetic.simulator.internal.SimulatorEngine.processRequest(SimulatorEngine.java:419)
    at com.seagate.kinetic.simulator.io.provider.nio.NioQueuedRequestProcessRunner.doProcessMessage(NioQueuedRequestProcessRunner.java:190)
    at com.seagate.kinetic.simulator.io.provider.nio.NioQueuedRequestProcessRunner.run(NioQueuedRequestProcessRunner.java:136)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

Basically, I'm doing this:

void dump(std::shared_ptr<kinetic::BlockingKineticConnection> bc){
    std:: string last_key(4096, '\xff');
    int count = 0;
    for (kinetic::KeyRangeIterator it =
             bc -> IterateKeyRange("", true, last_key, true, 1000);
         it != kinetic::KeyRangeEnd();
         ++it) {
        printf("%s\n", it->c_str());
        count ++;
    }
    std:: cout << std::endl << "count=" << count << std::endl;
}

Queue depth limit, i.e. asyncQueuedSize is not always respected

There appears to be a problem with kinetic-java/kinetic-client/src/main/java/com/seagate/kinetic/client/io/MessageHandler.java in the method writeAsync near line 325. The code in question is

        // synchronized (this) {
            while (this.ackmap.size() >= this.asyncQueuedSize && this.isRunning) {
                this.wait();
            // }
        }

This code is attempting to limit the queue size to asyncQueuedSize but because of the extra && this.isRunning clause, if the MessageHandler, i.e. this, isn't running or isn't running yet, then the queue can grow to arbitrary size.

This actually happens at the start of the microAsync method in the micro performance test.

I don't know why the && this.isRunningclause is here. I probably just don't understand. But without it, i.e. with just

        // synchronized (this) {
        while ( this.ackmap.size() >= this.asyncQueuedSize ) {
            this.wait();
            // }
        }

the queue size is correctly limited.

It seems broken as it is. Suggestions?

error compiling sources

I downloaded this git repository and followed instructions to try to build the simulator. When I do:

mvn clean package

as per the instructions, I get the following error:

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /home/storagevisor/ethernet-drive/kinetic-java-master/kinetic-client/src/main/java/com/seagate/kinetic/admin/impl/DefaultKineticLog.java:[328,54] getVendorBytes() has private access in com.seagate.kinetic.proto.Kinetic.Message.GetLog.Configuration
[ERROR] /home/storagevisor/ethernet-drive/kinetic-java-master/kinetic-client/src/main/java/com/seagate/kinetic/admin/impl/DefaultKineticLog.java:[333,55] getVersionBytes() has private access in com.seagate.kinetic.proto.Kinetic.Message.GetLog.Configuration
[INFO] 2 errors

hence it fails compiling the client and skips compiling the simulator. any ideas?

Connection Invalid magic number

Hello,

We are working on kinetic and when we try to connect with the simulator, we have some errors.

Darwin Kernel Version 14.3.0
maven: 3.2.5
java version "1.8.0_45"

WARNING: Unexpected exception from downstream.
io.netty.handler.codec.CorruptedFrameException: Invalid magic number: 22
    at com.seagate.kinetic.common.protocol.codec.KineticDecoder.decode(KineticDecoder.java:85)
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:228)
    at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:192)
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelInactive(DefaultChannelHandlerContext.java:240)
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelInactive(DefaultChannelHandlerContext.java:226)
    at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:767)
    at io.netty.channel.AbstractChannel$AbstractUnsafe$5.run(AbstractChannel.java:567)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101)
    at java.lang.Thread.run(Thread.java:745)

The code to connect with the simulator,

  kinetic::KineticConnectionFactory kinetic_connection_factory = kinetic::NewKineticConnectionFactory();
  kinetic::ConnectionOptions options;
  std::unique_ptr<kinetic::NonblockingKineticConnection> connection;

  options.host = "127.0.0.1";
  options.port = 8123;
  options.user_id = 1;
  options.hmac_key = "asdfasdf";


  kinetic::Status status = kinetic_connection_factory.NewNonblockingConnection(options, connection);
  if (!status.ok()) {
      printf("FAILED\n");
  } else {
      printf("SUCCEED\n");
  }

And it's completely random sometimes it's works, sometimes not.

Thanks for your time.

Cascade puts not working

There seems to be a bug with P2P cascade put.
Start three simulators listening at [8123, 8125, 8127].

Run example from kinetic-py.

Prints:

Writing { Key: a9161851-01ea-49fa-af08-56dda9ccc4ee, Value: 0a4ade7b-044f-4869-a987-d452208e0aa1 } on first device
Copying key from first to second device and telling him to copy to third
Read { Key: a9161851-01ea-49fa-af08-56dda9ccc4ee, Value: 0a4ade7b-044f-4869-a987-d452208e0aa1 } from second device
Traceback (most recent call last):
  File "examples/p2p_pipe.py", line 31, in <module>
    print 'Read { Key: %s, Value: %s } from third device' % (kv.key, kv.value)
AttributeError: 'NoneType' object has no attribute 'key'

The third device does not have the key.

This bug was first reported at Kinetic/kinetic-py#12

mvn clean package throws an error

After downloading latest kinetic-java simulator, I am seeing this error on compilation in WIndows:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.
0:compile (default-compile) on project kinetic-client: Compilation failure: Comp
ilation failure:
[ERROR] /C:/Users/dabhijit/git/kinetic-java/kinetic-client/src/main/java/kinetic
/client/ClientConfiguration.java:[127,13] cannot find symbol
[ERROR] symbol: class ConnectionListener
[ERROR] location: class kinetic.client.ClientConfiguration
[ERROR] /C:/Users/dabhijit/git/kinetic-java/kinetic-client/src/main/java/kinetic
/client/ClientConfiguration.java:[564,39] cannot find symbol
[ERROR] symbol: class ConnectionListener
[ERROR] location: class kinetic.client.ClientConfiguration
[ERROR] /C:/Users/dabhijit/git/kinetic-java/kinetic-client/src/main/java/kinetic
/client/ClientConfiguration.java:[574,12] cannot find symbol
[ERROR] symbol: class ConnectionListener
[ERROR] location: class kinetic.client.ClientConfiguration

Encryption uses different keys for different platform

hi all,
I am running this kinetic smoke test both on linux and windows platform , I observed that windows uses 128 bits key for encryption/Decryption but Linux uses 256bits can any one explain me why?
Is it because of JVM or the key in kinetic smoke test is dependent on OS anything kike that ?

Thanks in advance

Tests Fails

Hi,

My team and I can't get the simulator to work properly.
We are working on OSX 10.10.3
maven 3.3.3
java 1.8.0_45

Installation works fine but tests are failing as shown here :

===============================================
    GRP-simulator
    Tests run: 371, Failures: 13, Skips: 0
===============================================

[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 51 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@77afea7d: 60 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@6d86b085: 34 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@299a06ac: 246 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@4ac68d3e: 140 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@1f89ab83: 297 ms
Tests run: 371, Failures: 13, Errors: 0, Skipped: 0, Time elapsed: 49.749 sec <<< FAILURE! - in TestSuite
getLogNewAPI(com.seagate.kinetic.adminAPI.KineticAdminTest)  Time elapsed: 0.037 sec  <<< FAILURE!
java.lang.AssertionError: getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",11"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.adminAPI.KineticAdminTest.getLogNewAPI(KineticAdminTest.java:2278)

testGetCapacityAndUtilization(com.seagate.kinetic.adminAPI.KineticAdminTest)  Time elapsed: 0.006 sec  <<< FAILURE!
java.lang.AssertionError: getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",38"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.adminAPI.KineticAdminTest.testGetCapacityAndUtilization(KineticAdminTest.java:2707)

testGetTemperatureAndCapacityAndUtilization(com.seagate.kinetic.adminAPI.KineticAdminTest)  Time elapsed: 0.018 sec  <<< FAILURE!
java.lang.AssertionError: getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",53"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.adminAPI.KineticAdminTest.testGetTemperatureAndCapacityAndUtilization(KineticAdminTest.java:2533)

testGetTemperatureAndUtilization(com.seagate.kinetic.adminAPI.KineticAdminTest)  Time elapsed: 0.002 sec  <<< FAILURE!
java.lang.AssertionError: getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",55"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.adminAPI.KineticAdminTest.testGetTemperatureAndUtilization(KineticAdminTest.java:2664)

testGetUtilization(com.seagate.kinetic.adminAPI.KineticAdminTest)  Time elapsed: 0.004 sec  <<< FAILURE!
java.lang.AssertionError: getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",62"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.adminAPI.KineticAdminTest.testGetUtilization(KineticAdminTest.java:2399)

testLockDevice_withIncorrectLockpin(com.seagate.kinetic.adminAPI.KineticAdminTest)  Time elapsed: 0.016 sec  <<< FAILURE!
java.lang.AssertionError: get log with unlocked device throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",87"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.adminAPI.KineticAdminTest.testLockDevice_withIncorrectLockpin(KineticAdminTest.java:2076)

testSetSecurity_modifyLockPin(com.seagate.kinetic.adminAPI.KineticAdminTest)  Time elapsed: 0 sec  <<< FAILURE!
java.lang.AssertionError: Change lock pin throw exceptionKinetic Command Exception: NOT_AUTHORIZED: Invalid old lock pin: <ByteString@65264e3c size=0>
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.adminAPI.KineticAdminTest.testSetSecurity_modifyLockPin(KineticAdminTest.java:1876)

testSetSecurity_setLockPin(com.seagate.kinetic.adminAPI.KineticAdminTest)  Time elapsed: 0.006 sec  <<< FAILURE!
java.lang.AssertionError: Set erase pin throw exceptionKinetic Command Exception: NOT_AUTHORIZED: Invalid old lock pin: <ByteString@65264e3c size=0>
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.adminAPI.KineticAdminTest.testSetSecurity_setLockPin(KineticAdminTest.java:1852)

test_GetLogTest(com.seagate.kinetic.adminAPI.KineticAdminTest)  Time elapsed: 0.006 sec  <<< FAILURE!
java.lang.AssertionError: getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",38"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.adminAPI.KineticAdminTest.test_GetLogTest(KineticAdminTest.java:347)

testunLockDevice_withCorrectLockpin(com.seagate.kinetic.adminAPI.KineticAdminTest)  Time elapsed: 0.022 sec  <<< FAILURE!
java.lang.AssertionError: get log with unlock device throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",85"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.adminAPI.KineticAdminTest.testunLockDevice_withCorrectLockpin(KineticAdminTest.java:2155)

testLockDevice_withEmptyLockPin_LockDisable(com.seagate.kinetic.simulator.client.admin.impl.PinOpTest)  Time elapsed: 0.242 sec  <<< FAILURE!
java.lang.AssertionError: Lock disable, op throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",74"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.simulator.client.admin.impl.PinOpTest.testLockDevice_withEmptyLockPin_LockDisable(PinOpTest.java:135)

testLockDevice_withNullLockPin_LockDisable(com.seagate.kinetic.simulator.client.admin.impl.PinOpTest)  Time elapsed: 0.271 sec  <<< FAILURE!
java.lang.AssertionError: Lock disable, op throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",35"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.simulator.client.admin.impl.PinOpTest.testLockDevice_withNullLockPin_LockDisable(PinOpTest.java:111)

testLockDevice_withUnNullOrEmptyLockPin_LockEnable_unLockDevice(com.seagate.kinetic.simulator.client.admin.impl.PinOpTest)  Time elapsed: 0.244 sec  <<< FAILURE!
java.lang.AssertionError: After unlock device, op throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",80"
    at org.testng.Assert.fail(Assert.java:94)
    at com.seagate.kinetic.simulator.client.admin.impl.PinOpTest.testLockDevice_withUnNullOrEmptyLockPin_LockEnable_unLockDevice(PinOpTest.java:81)


Results :

Failed tests:
  KineticAdminTest.getLogNewAPI:2278 getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",11"
  KineticAdminTest.testGetCapacityAndUtilization:2707 getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",38"
  KineticAdminTest.testGetTemperatureAndCapacityAndUtilization:2533 getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",53"
  KineticAdminTest.testGetTemperatureAndUtilization:2664 getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",55"
  KineticAdminTest.testGetUtilization:2399 getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",62"
  KineticAdminTest.testLockDevice_withIncorrectLockpin:2076 get log with unlocked device throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",87"
  KineticAdminTest.testSetSecurity_modifyLockPin:1876 Change lock pin throw exceptionKinetic Command Exception: NOT_AUTHORIZED: Invalid old lock pin: <ByteString@65264e3c size=0>
  KineticAdminTest.testSetSecurity_setLockPin:1852 Set erase pin throw exceptionKinetic Command Exception: NOT_AUTHORIZED: Invalid old lock pin: <ByteString@65264e3c size=0>
  KineticAdminTest.test_GetLogTest:347 getLog throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",38"
  KineticAdminTest.testunLockDevice_withCorrectLockpin:2155 get log with unlock device throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",85"
  PinOpTest.testLockDevice_withEmptyLockPin_LockDisable:135 Lock disable, op throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",74"
  PinOpTest.testLockDevice_withNullLockPin_LockDisable:111 Lock disable, op throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",35"
  PinOpTest.testLockDevice_withUnNullOrEmptyLockPin_LockEnable_unLockDevice:81 After unlock device, op throw exception: Kinetic Command Exception: INVALID_REQUEST: java.lang.NumberFormatException: For input string: ",80"

Tests run: 371, Failures: 13, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Kinetic ............................................ SUCCESS [  0.732 s]
[INFO] Kinetic/Common ..................................... SUCCESS [  6.513 s]
[INFO] Kinetic/Client ..................................... SUCCESS [  1.610 s]
[INFO] Kinetic/Simulator .................................. SUCCESS [  1.176 s]
[INFO] Kinetic/Test ....................................... FAILURE [ 55.100 s]
[INFO] Kinetic/All-in-one ................................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:05 min
[INFO] Finished at: 2015-07-15T10:20:08+02:00
[INFO] Final Memory: 27M/377M
[INFO] ------------------------------------------------------------------------

typical response from the simulator is :

juil. 15, 2015 10:11:27 AM com.seagate.kinetic.simulator.internal.SimulatorEngine processRequest
AVERTISSEMENT: java.lang.NumberFormatException: For input string: ",24"
com.seagate.kinetic.simulator.internal.handler.ServiceException: java.lang.NumberFormatException: For input string: ",24"
    at com.seagate.kinetic.simulator.internal.handler.GetLogOpHandler.processRequest(GetLogOpHandler.java:44)
    at com.seagate.kinetic.simulator.internal.RequestContext.processRequest(RequestContext.java:265)
    at com.seagate.kinetic.simulator.internal.SimulatorEngine.processRequest(SimulatorEngine.java:463)
    at com.seagate.kinetic.simulator.io.provider.nio.NioQueuedRequestProcessRunner.doProcessMessage(NioQueuedRequestProcessRunner.java:191)
    at com.seagate.kinetic.simulator.io.provider.nio.NioQueuedRequestProcessRunner.run(NioQueuedRequestProcessRunner.java:137)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NumberFormatException: For input string: ",24"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.lang.Double.parseDouble(Double.java:538)
    at com.seagate.kinetic.simulator.utility.UtilizationGenerator.generateValue(UtilizationUtil.java:73)
    at com.seagate.kinetic.simulator.utility.UtilizationGenerator.generate(UtilizationUtil.java:52)
    at com.seagate.kinetic.simulator.utility.UtilizationUtil.getUtilization(UtilizationUtil.java:39)
    at com.seagate.kinetic.simulator.internal.GetLogHandler.handleGetLog(GetLogHandler.java:116)
    at com.seagate.kinetic.simulator.internal.handler.GetLogOpHandler.processRequest(GetLogOpHandler.java:42)
    ... 7 more

Are we missing something ?

Thank you for your time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.