org.talend.dataquality.statistics.datetime.PerformanceTest.java Source code

Java tutorial

Introduction

Here is the source code for org.talend.dataquality.statistics.datetime.PerformanceTest.java

Source

// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataquality.statistics.datetime;

import static org.junit.Assert.assertTrue;

import java.io.IOException;
import java.io.InputStream;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
import java.util.Collections;
import java.util.List;

import org.apache.commons.io.IOUtils;
import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PerformanceTest {

    private static final Logger LOGGER = LoggerFactory.getLogger(PerformanceTest.class);

    private static final int REPLICATE = 3333;

    @Test
    @Ignore
    public void testIsDate() throws IOException {

        final InputStream stream = SystemDateTimePatternManager.class.getResourceAsStream("DateSampleTable.txt");
        final List<String> lines = IOUtils.readLines(stream);

        SystemDateTimePatternManager.isDate("12/02/99");// init DateTimeFormatters

        final ThreadMXBean mxBean = ManagementFactory.getThreadMXBean();
        final long cpuBefore = mxBean.getCurrentThreadCpuTime();

        int count = 0;
        loop: for (int n = 0; n < REPLICATE; n++) {
            for (int i = 1; i < lines.size(); i++) {
                final String line = lines.get(i);
                if (!"".equals(line.trim())) {
                    final String[] sampleLine = line.trim().split("\t");
                    final String sample = sampleLine[0];
                    CustomDateTimePatternManager.isDate(sample, Collections.emptyList());
                    count++;
                    if (count > 100000) {
                        break loop;
                    }
                }
            }
        }

        final long cpuAfter = mxBean.getCurrentThreadCpuTime();

        final long difference = cpuAfter - cpuBefore;
        assertTrue("The method isDate() is slower than expected. Actual CPU time spent: " + difference,
                difference < 20e8);
    }

    @Test
    @Ignore
    public void testGetPatterns() throws IOException {

        final InputStream stream = SystemDateTimePatternManager.class.getResourceAsStream("DateSampleTable.txt");
        final List<String> lines = IOUtils.readLines(stream);

        SystemDateTimePatternManager.datePatternReplace("12/02/99");// init DateTimeFormatters

        final ThreadMXBean mxBean = ManagementFactory.getThreadMXBean();
        final long cpuBefore = mxBean.getCurrentThreadCpuTime();

        int count = 0;
        loop: for (int n = 0; n < REPLICATE; n++) {
            for (int i = 1; i < lines.size(); i++) {
                final String line = lines.get(i);
                if (!"".equals(line.trim())) {
                    final String[] sampleLine = line.trim().split("\t");
                    final String sample = sampleLine[0];
                    SystemDateTimePatternManager.datePatternReplace(sample);
                    count++;
                    if (count > 100000) {
                        break loop;
                    }
                }
            }
        }

        final long cpuAfter = mxBean.getCurrentThreadCpuTime();

        final long difference = cpuAfter - cpuBefore;
        assertTrue("The method getPatterns() is slower than expected. Actual CPU time spent: " + difference,
                difference < 25e8);
    }

}