/*
* 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 org.apache.activemq.artemis.tests.timing.util;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.activemq.artemis.utils.UTF8Util;
import org.junit.After;
import org.junit.Assert;
import org.junit.Test;
public class UTF8Test extends ActiveMQTestBase {
private final String str = "abcdef&^*&!^ghijkl\uB5E2\uCAC7\uB2BB\uB7DD\uB7C7\uB3A3\uBCE4\uB5A5" + "abcdef&^*&!^ghijkl\uB5E2\uCAC7\uB2BB\uB7DD\uB7C7\uB3A3\uBCE4\uB5A5" + "abcdef&^*&!^ghijkl\uB5E2\uCAC7\uB2BB\uB7DD\uB7C7\uB3A3\uBCE4\uB5A5" + "abcdef&^*&!^ghijkl\uB5E2\uCAC7\uB2BB\uB7DD\uB7C7\uB3A3\uBCE4\uB5A5" + "abcdef&^*&!^ghijkl\uB5E2\uCAC7\uB2BB\uB7DD\uB7C7\uB3A3\uBCE4\uB5A5" + "abcdef&^*&!^ghijkl\uB5E2\uCAC7\uB2BB\uB7DD\uB7C7\uB3A3\uBCE4\uB5A5" + "abcdef&^*&!^ghijkl\uB5E2\uCAC7\uB2BB\uB7DD\uB7C7\uB3A3\uBCE4\uB5A5" + "abcdef&^*&!^ghijkl\uB5E2\uCAC7\uB2BB\uB7DD\uB7C7\uB3A3\uBCE4\uB5A5" + "abcdef&^*&!^ghijkl\uB5E2\uCAC7\uB2BB\uB7DD\uB7C7\uB3A3\uBCE4\uB5A5";
final int TIMES = 5;
final long numberOfIteractions = 1000000;
@Test
public void testWriteUTF() throws Exception {
ActiveMQBuffer buffer = ActiveMQBuffers.fixedBuffer(10 * 1024);
long start = System.currentTimeMillis();
for (int c = 0; c < TIMES; c++) {
for (long i = 0; i < numberOfIteractions; i++) {
if (i == 10000) {
start = System.currentTimeMillis();
}
buffer.clear();
buffer.writeUTF(str);
}
long spentTime = System.currentTimeMillis() - start;
System.out.println("Time WriteUTF = " + spentTime);
}
}
@Test
public void testReadUTF() throws Exception {
ActiveMQBuffer buffer = ActiveMQBuffers.fixedBuffer(10 * 1024);
buffer.writeUTF(str);
long start = System.currentTimeMillis();
for (int c = 0; c < TIMES; c++) {
for (long i = 0; i < numberOfIteractions; i++) {
if (i == 10000) {
start = System.currentTimeMillis();
}
buffer.resetReaderIndex();
String newstr = buffer.readUTF();
Assert.assertEquals(str, newstr);
}
long spentTime = System.currentTimeMillis() - start;
System.out.println("Time readUTF = " + spentTime);
}
}
@Override
@After
public void tearDown() throws Exception {
UTF8Util.clearBuffer();
super.tearDown();
}
}