/** * Copyright 2011 Intuit Inc. All Rights Reserved */ package com.intuit.tank.dao; /* * #%L * Data Access * %% * Copyright (C) 2011 - 2015 Intuit Inc. * %% * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * #L% */ import java.util.HashMap; import java.util.List; import java.util.Map; import javax.persistence.EntityManager; import javax.persistence.Query; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.Configuration; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import com.intuit.tank.dao.ScriptGroupDao; import com.intuit.tank.dao.WorkloadDao; import com.intuit.tank.project.ScriptGroup; import com.intuit.tank.project.TestPlan; import com.intuit.tank.project.Workload; /** * ProductDaoTest * * @author dangleton * */ public class UpdateScriptGroupsTest { private ScriptGroupDao dao; private WorkloadDao workloadDao; private Map<Integer, Workload> workloadMap = new HashMap<Integer, Workload>(); @BeforeClass public void configure() { LoggerContext ctx = (LoggerContext) LogManager.getContext(false); Configuration config = ctx.getConfiguration(); config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME).setLevel(Level.INFO); ctx.updateLoggers(); // This causes all Loggers to refetch information from their LoggerConfig. dao = new ScriptGroupDao(); workloadDao = new WorkloadDao(); } @Test(groups = { "manual" }) public void upgrade() { EntityManager em = dao.getEM(); Query query = em .createNativeQuery("select id, workload_id from script_group where test_plan_id is null order by position"); @SuppressWarnings("unchecked") List<Object[]> results = query.getResultList(); for (Object[] set : results) { for (Object o : set) { Integer id = (Integer) set[0]; Integer workloadId = (Integer) set[1]; System.out.print(o); System.out.print(", "); if (workloadId != null) { updateScriptGroup(id, workloadId); } else { deleteScriptGroup(id); } } System.out.print('\n'); } for (Workload w : workloadMap.values()) { workloadDao.saveOrUpdate(w); } } private void deleteScriptGroup(Integer id) { dao.delete(id); } private void updateScriptGroup(Integer id, Integer workloadId) { Workload workload = workloadMap.get(workloadId); if (workload == null) { workload = workloadDao.findById(workloadId); if (workload == null) { deleteScriptGroup(id); return; } workloadMap.put(workloadId, workload); } List<TestPlan> testPlans = workload.getTestPlans(); if (testPlans.isEmpty()) { // create a testPlan TestPlan plan = TestPlan.builder().name("Main").usersPercentage(100).build(); workload.addTestPlan(plan); } ScriptGroup scriptGroup = dao.findById(id); testPlans.get(0).addScriptGroupAt(scriptGroup, scriptGroup.getPosition()); } }