RAFW(Rational Automation Framework for WebSphere)가 GA된지도 벌써 한달이 다 되가는데,
제대로 테스트를 하지 못하고 있었다.
사실, 설치 및 사용에 대한 공식적 자료를 찾기가 어려웠던 이유였는데, 설치를 다음의 절차를 따라 Build Forge 7.1.1을 깔게되면,
Document도 볼수 있단다.
이 글은 스프링노트에서 작성되었습니다.
그동안 JUnit 테스트를 이용하면서, 가장 힘들었던 부분 중에 하나는 테스트 데이터를 하드코딩해야 하고, 여러 값을 세팅하기 어렵다는 것이었다.
RAD 6.X에서는 컴포넌트 테스트라는 기능을 제공하여, 이 부분을 커버해 주고 있었는데, 7.0으로 넘어오면서 TPTP기반의 테스트로 바뀌면서
그 기능이 도움말에서 아주 찾기 어려웠으며, 사용하기 어려웠는데,
7.5에서 다시 찾아보니, 다시 그럭저럭 쓸만하게 바뀌었다. 아마도 Ganemede의 힘이 아닐까 싶다. (한편으로는 좀 아쉽긴 하지만)
RSA 도움말의 내용이지만, 꼭 따라해 볼 만 할 것 같아서, 캡처해 봤다.
JUnit 테스트에서 데이터풀 액세스
목표:
Eclipse TPTP(Test and Performance Tools Platform)를 사용하여 예제 테스트 애플리케이션에서 데이터풀을 작성하고 액세스합니다.
필요한 시간
1시간
시작하기 전에
이 학습을 시작하기 전에 다음을 수행해야 합니다.
- Eclipse와 Eclipse TPTP(Test and Performance Tools Platform)를 설치하십시오.
- JUnit 테스트에 대한 기본 정보를 습득하십시오. JUnit 테스트에 대한 자세한 정보는 www.junit.org를 참조하십시오.
- 현재 TPTP 버전에 맞는 Agent Controller를 구성하고 실행하십시오. 자세한 정보는 Agent Controller 시작하기를 참조하십시오.
설명
이 학습에서는 MyShoppingCart 애플리케이션을 작성하고 테스트합니다. Eclipse TPTP(Test and Performance Tools Platform)를 사용하면 JUnit 테스트를 개발하고, 테스트 환경에 데이터를 제공하는 데이터풀을 작성할 수 있습니다.
이 학습에서는 다음 프로시저를 안내합니다.
샘플 사용자 애플리케이션 작성
이 프로시저에서는 MyShoppingCart 클래스를 개발하고 다음 프로시저에서는 Eclipse TPTP(Test and Performance Tools Platform)를 사용하여 해당 테스트 환경을 개발합니다.
- 새 Eclipse 자바 프로젝트를 작성하십시오.
- 파일 메뉴에서 파일 > 새로 작성 > 프로젝트...를 선택하십시오. 새 프로젝트 대화 상자가 나타납니다.
- 마법사 목록에서 자바 프로젝트를 선택하고 다음을 클릭하십시오. 자바 프로젝트 작성 페이지가 나타납니다.
- 프로젝트 이름에 datapoolExample을 입력하고 완료를 클릭하십시오. 네비게이터 보기에 datapoolExample 프로젝트가 나타납니다.
- MyShoppingCart 클래스를 작성하십시오.
- 네비게이터 보기에서 datapoolExample 프로젝트를 마우스 오른쪽 단추로 클릭하고 새로 작성 > 클래스를 선택하십시오. 새 자바 클래스 대화 상자가 나타납니다.
- 이름 필드에 MyShoppingCart를 입력하십시오.
- Main 메소드 public static void main(String[] args)를 작성하는 옵션을 지우십시오.
- 완료를 클릭하십시오. 자바 편집기에 MyShoppingCart.java 파일이 나타납니다.
- MyShoppingCart 소스에 다음을 입력하십시오.
import java.util.Hashtable; public class MyShoppingCart { public Hashtable myFlowers; public MyShoppingCart() { myFlowers = new Hashtable(); myFlowers.put("Orchid", new Double(5.99)); myFlowers.put("Tulip", new Double(1.99)); myFlowers.put("Yellow Carnation", new Double(6.99)); myFlowers.put("White Rose", new Double(9.99)); myFlowers.put("Geraniums", new Double(4.99)); } public double itemCost(String itemName, int itemQuantity) { Double price = (Double)myFlowers.get(itemName); if (price != null) { return price.doubleValue()*itemQuantity; } return -1; } } - MyShoppingCart.java를 저장하십시오. 파일 메뉴에서 파일 > 저장을 선택하십시오.
TPTP 테스트 스위트 설정
이 프로시저에서는 MyShoppingCart 클래스의 테스트 스위트를 개발합니다. Eclipse TPTP(Test and Performance Tools Platform)를 사용하여 itemCost 메소드의 JUnit 테스트를 개발합니다.
- 테스트 Perspective를 여십시오.
- 파일 메뉴에서 창 > Perspective 열기 > 기타를 선택하십시오.
- 테스트를 선택하고 확인을 클릭하십시오. 테스트 네비게이터가 나타납니다.
- 새 TPTP JUnit 테스트를 작성하십시오.
- 테스트 네비게이터에서 datapoolExample 프로젝트를 마우스 오른쪽 단추로 클릭하고 새로 작성 > 요소 테스트...를 선택하십시오.
- 요소 테스트 대화 상자에서 TPTP JUnit 테스트를 선택하고 다음을 클릭하십시오. 새 테스트 케이스 대화 상자가 나타나며 JUnit 라이브러리를 추가하도록 프롬프트합니다. JUnit 라이브러리를 추가하려면 예를 클릭하십시오.
- 새 JUnit 테스트 소스 코드 페이지의 이름 필드에 MyShoppingCartTest를 입력하십시오. 테스트 동작 편집 방법 선택 섹션에서 테스트 편집기에서 편집 옵션(기본값)을 선택하십시오.
- 완료를 클릭하십시오. TPTP JUnit 테스트 편집기가 나타나며 MyShoppingCartTest 테스트 스위트가 표시됩니다. 개요 탭에는 테스트 설명, 소스 정보 및 테스트 메소드 목록이 포함됩니다. 현재 정의된 테스트 메소드가 없습니다. 이 학습의 경우, TPTP JUnit 테스트 편집기는 메소드 스텁을 생성하므로 소스 정보 섹션의 테스트 동작을 코드로 구현 옵션은 지워져야 합니다. 자세한 정보는 JUnit 테스트 스위트 편집기를 참조하십시오.
- testItemCost 및 testMyShoppingCartConstructor 메소드를 추가하십시오.
- 테스트 메소드 탭에서 추가를 클릭하십시오. 테스트의 기본 이름이 나타납니다.
- testItemCost 메소드를 추가하십시오. 이름 필드에 새 테스트 이름의 testItemCost를 입력하십시오. 설명 필드에 Test for the MyShoppingCart.itemCost(String, int) method를 입력하십시오.
- testMyShoppingCartConstructor 메소드를 추가하십시오. 테스트 메소드 탭에서 추가를 클릭하십시오. 이름 필드에 새 테스트 이름의 testMyShoppingCartConstructor를 입력하십시오. 설명 필드에 Test for the MyShoppingCart constructor를 입력하십시오.
- 테스트 실행 동작을 구성하십시오.
- 테스트 실행 루프를 추가하십시오. 동작 탭에서 추가.. > 루프를 클릭하십시오. 이름 필드에 Loop_MyShoppingCart를 입력하십시오. 반복 횟수 필드에 1(기본값)을 입력하십시오.
- testMyShoppingCartConstructor 호출을 추가하십시오. Loop_MyShoppingCart를 선택하고 추가... > 호출을 클릭하십시오. 테스트 호출 대화 상자가 나타납니다. testMyShoppingCartConstructor를 선택하고 확인을 클릭하십시오.
- testItemCost 호출을 추가하십시오. Loop_MyShoppingCart를 선택하고 추가... > 호출을 클릭하십시오. 테스트 호출 대화 상자가 나타납니다. testItemCost를 선택하고 확인을 클릭하십시오.
- 테스트 스위트를 저장하십시오. 파일 메뉴에서 파일 > 저장을 선택하십시오.

참고: 저장 명령을 실행하면 TPTP JUnit 테스트 편집기가 MyShoppingCartTest.java에 테스트 메소드 스텁을 작성합니다.
- 생성된 JUnit 테스트 메소드 testMyShoppingCartConstructor 및 testItemCost의 코드를 입력하십시오.
- 자바 Perspective를 여십시오. 파일 메뉴에서 창 > Perspective 열기 > 기타... > 자바를 선택하십시오.
- MyShoppingCartTest.java를 여십시오. 네비게이터에서 datapoolExample 프로젝트 폴더를 열고 MyShoppingCartTest.java를 두 번 클릭하십시오. 테스트 스위트를 설정하고 실행하는 코드와 testMyShoppingCartConstructor 및 testItemCost의 스텁 메소드와 함께 MyShoppingCartTest.java 컨텐츠가 자바 편집기에 나타납니다.
- testMyShoppingCartConstructor 메소드에 대한 다음 코드를 입력하십시오.
public void testMyShoppingCartConstructor() throws Exception { MyShoppingCart cart = new MyShoppingCart(); Double priceOrchid = (Double)cart.myFlowers.get("Orchid"); Double priceTulip = (Double)cart.myFlowers.get("Tulip"); assertTrue(priceOrchid.doubleValue() == 5.99); assertTrue(priceTulip.doubleValue() == 1.99); } - testItemCost 메소드에 대한 다음 코드를 입력하십시오.
public void testItemCost() throws Exception { MyShoppingCart cart = new MyShoppingCart(); double priceForTwo = cart.itemCost("Orchid", 2); assertTrue(priceForTwo == 11.98); } - MyShoppingCartTest.java를 저장하십시오. 파일 메뉴에서 파일 > 저장을 선택하십시오.
- 테스트 Perspective를 열고 테스트 배치를 작성하십시오. 예를 들어, 테스트 배치 작성을 참조하십시오.
- 사용자 정의 배치를 사용하여 테스트를 실행하십시오.
- 테스트 네비게이터에서 MyShoppingCartTest 테스트 스위트를 마우스 오른쪽 단추로 클릭하고 실행 도구 > 실행...을 선택하십시오. 실행 구성 대화 상자가 나타납니다.
- 구성 분할창에서 테스트를 선택한 후 새로 작성을 클릭하십시오.
- 실행 구성의 왼쪽 분할창에서(실행할 테스트 선택) datapoolExample을 펼치고 MyShoppingCartTest 테스트 스위트를 선택하십시오.
- 실행 구성의 오른쪽 분할창에서 섹션을 작성한 배치를 선택하십시오.
- 테스트 로그 탭에서 기본값 사용 옵션을 지우고 위치에 대한 datapoolExample 프로젝트 폴더를 선택하십시오.
- 실행을 클릭하여 테스트를 실행하십시오.
- 테스트 네비게이터에 나타나는 MyShoppingCartTest 테스트 로그를 두 번 클릭하십시오. MyShoppingCartTest 테스트 로그가 나타납니다. 테스트 세부사항을 보려면 이벤트 탭을 선택하십시오. 테스트 스위트 시작, Loop_MyShoppingCart 시작, 테스트 시작, 테스트 판정, 테스트 중지, 두 번째 테스트 시작, 두 번째 테스트 판정, 두 번째 테스트 중지, 루프 중지, 테스트 스위트 판정 및 테스트 스위트 중지와 같은 이벤트가 표시되어야 합니다.

데이터풀 작성 및 테스트 데이터 초기화
이 프로시저에서는 테스트 데이터를 저장할 단순 데이터풀을 작성합니다. 데이터풀 편집기를 사용하여 변수(열), 레코드(행) 및 등가 클래스(관련 레코드 그룹)와 같은 데이터풀의 구조 요소를 정의합니다.
- 테스트 데이터를 포함하여 CSV(쉼표로 분리) 파일을 작성하십시오. 일반적으로 스프레드시트 애플리케이션 또는 데이터베이스의 데이터를 CSV 형식으로 내보낼 수 있습니다. 그러나 이 학습에서는 텍스트 편집기에 데이터를 입력합니다.
- 텍스트 편집기에서 다음을 입력하십시오.
,ModelNumber::String,Description::String,Price::Double flowers,F0001,Orchid,5.99 flowers,F0002,Tulip,1.99 flowers,F0003,Yellow Carnation,6.99 flowers,F0004,White Rose,9.99 flowers,F0005,Geraniums,4.99
- 임시 외부 위치에 파일을 flowerData.csv로 저장하십시오.
- 텍스트 편집기에서 다음을 입력하십시오.
- Eclipse에서 테스트 Perspective를 여십시오.
- 파일 메뉴에서 창 > Perspective 열기 > 기타를 선택하십시오.
- 테스트를 선택하고 확인을 클릭하십시오. 테스트 네비게이터가 나타납니다.
- 테스트 네비게이터에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 새로 작성 > 테스트 요소...를 선택하십시오. 새 테스트 요소 대화 상자가 나타납니다.
- 마법사 목록 상자에서 테스트 자산 폴더를 펼치고 데이터풀을 선택하십시오.
- 다음을 클릭하십시오. 새 데이터풀 대화 상자가 나타납니다.
- 데이터풀 프로젝트 폴더 및 데이터풀 이름을 선택하십시오. 기존 프로젝트 목록에서 datapoolExample 프로젝트를 선택하십시오. 이름 필드에 shoppingCartDatapool을 입력하십시오. 계속하려면 다음을 클릭하고 CSV(쉼표로 분리) 파일 가져오기 페이지를 열려면 다음을 다시 클릭하십시오.
- CSV 파일 flowerData.csv를 가져오십시오.
- CSV 파일 필드에서 찾아보기를 클릭하여 flowerData.csv를 탐색하십시오.
- 첫 번째 행에 변수 이름 및 제안 유형 포함 옵션을 선택하십시오. flowerData.csv의 첫 번째 행에는 열 표제와 유형이 포함됩니다.
- 첫 번째 열에 등가 클래스 이름 포함 옵션을 선택하십시오. 등가 클래스는 관련 데이터의 그룹입니다. flowerData.csv의 첫 번째 열은 flowers라는 단일 등가 클래스를 지정합니다.
- 완료를 클릭하십시오. 초기 데이터풀 크기를 지정한 경우, 대화 상자가 나타납니다. 이 크기는 CSV 파일 크기와 충돌할 수 있습니다. CSV 파일의 크기를 사용하려면 예를 클릭하십시오. 지정된 초기 크기를 사용하려면(CSV 파일 데이터를 자를 수 있음) 아니오를 클릭하십시오.flowers 등가 클래스에 포함된 데이터를 표시하는 데이터풀 편집기가 나타납니다.

데이터풀 작성에 대한 자세한 정보는 데이터풀 작성을 참조하십시오.
데이터풀을 참조할 테스트 케이스 수정
이 프로시저에서는 데이터풀 API를 사용하여 하드코딩된 테스트 값을 데이터풀 열에 대한 참조로 바꿉니다.
데이터풀 API에서 필요한 라이브러리 추가
데이터풀 API에는 다양한 TPTP 및 EMF(Eclipse Modeling Framework) 라이브러리가 필요합니다. 이 프로시저에서는 이러한 라이브러리를 자바 빌드 경로에 추가합니다.- 자바 Perspective를 여십시오. 파일 메뉴에서 창 > Perspective 열기 > 자바를 선택하십시오.
- datapoolExample 프로젝트 특성을 여십시오. 네비게이터 또는 패키지 탐색기 창에서 datapoolExample 프로젝트 폴더를 마우스 오른쪽 단추로 클릭하고 특성을 선택하십시오. datapoolExample 특성 대화 상자가 나타납니다.
- tptp-models.jar를 자바 빌드 경로에 추가하십시오.
- 왼쪽 분할창에서 자바 빌드 경로를 선택하십시오.
- 오른쪽 분할창에서 라이브러리 탭을 선택하고 변수 추가...를 클릭하십시오. 새 변수 클래스 경로 입력 대화 상자가 나타납니다.
- ECLIPSE_HOME 변수를 선택하고 확장...을 클릭하십시오. 변수 확장 대화 상자가 나타납니다. plugins > org.eclipse.tptp.platform.models_Version 폴더를 열고 tptp-models.jar을 선택하십시오. 여기서, Version은 TPTP 버전 번호입니다.
- 확인을 클릭하여 라이브러리를 추가하십시오.
- org.eclipse.emf.common_Version.jar를 자바 빌드 경로에 추가하십시오. 여기서, Version은 EMF 버전입니다.
- 새 변수 클래스 경로 입력 대화 상자에서 ECLIPSE_HOME 변수를 선택하고 확장...을 클릭하십시오.
- 플러그인 폴더를 열고 org.eclipse.emf.common_Version.jar를 선택하십시오. 여기서 Version은 EMF 버전입니다.
- 확인을 클릭하여 라이브러리를 추가하십시오.
- org.eclipse.emf.ecore_Version.jar를 자바 빌드 경로에 추가하십시오. 여기서, Version은 EMF 버전입니다.
- 새 변수 클래스 경로 입력 대화 상자에서 ECLIPSE_HOME 변수를 선택하고 확장...을 클릭하십시오.
- 플러그인 폴더를 열고 org.eclipse.emf.ecore_Version.jar를 선택하십시오. 여기서 Version은 EMF 버전입니다.
- 확인을 클릭하여 라이브러리를 추가하십시오.
- org.eclipse.core.runtime_Version.jar를 자바 빌드 경로에 추가하십시오. 여기서, Version은 Eclipse 플랫폼 버전입니다.
- 새 변수 클래스 경로 입력 대화 상자에서 ECLIPSE_HOME 변수를 선택하고 확장...을 클릭하십시오.
- 플러그인 폴더를 열고 org.eclipse.core.runtime_Version.jar를 선택하십시오. 여기서 Version은 Eclipse 플랫폼 버전입니다.
- 확인을 클릭하여 라이브러리를 추가하십시오.
- 확인을 클릭하여 특성 대화 상자를 닫으십시오.
데이터풀 API 사용
이 프로시저에서는 shoppingCartDatapool을 활용하도록 MyShoppingCartTest 클래스 및 testMyShoppingCartConstructor 메소드를 수정합니다.- 필요한 경우 자바 Perspective를 여십시오. 파일 메뉴에서 창 > Perspective 열기 > 자바를 선택하십시오.
- MyShoppingCartTest.java를 여십시오. 네비게이터에서 datapoolExample 프로젝트 폴더를 열고 MyShoppingCartTest.java를 두 번 클릭하십시오. MyShoppingCartTest.java 컨텐츠가 자바 편집기에 나타납니다.
- MyShoppingCartTest 클래스에 다음 import 문을 추가하십시오.
import org.eclipse.hyades.execution.runtime.datapool.IDatapool; import org.eclipse.hyades.execution.runtime.datapool.IDatapoolFactory; import org.eclipse.hyades.execution.runtime.datapool.IDatapoolIterator; import org.eclipse.hyades.models.common.datapool.impl.Common_DatapoolFactoryImpl;
- IDatapoolIterator 클래스 인스턴스를 선언하십시오. 이 클래스 인스턴스는 설정 코드에서 초기화되어 테스트 메소드에서 사용됩니다.
public class MyShoppingCartTest extends HyadesTestCase { IDatapoolIterator dpIterator; //... - setUp 메소드를 수정하여 데이터풀을 초기화하십시오. TPTP JUnit 테스트 환경의 경우 setUp 메소드는 공통 고정 기능을 제공합니다. setUp 메소드를 사용하면 공통 테스트 변수를 초기화할 수 있습니다. 참고: java.io.File 생성자의 <workspace>에 완전한 작업공간 경로를 지정하십시오.
protected void setUp() throws Exception { // Initialize the datapool factory IDatapoolFactory dpFactory = new Common_DatapoolFactoryImpl(); // Load the shoppingCartDatapool datapool IDatapool datapool = dpFactory.load( new java.io.File("<workspace>\\datapoolExample\\shoppingCartDatapool.datapool"), false); // Create an iterator to traverse the datapool dpIterator = dpFactory.open(datapool,"org.eclipse.hyades.datapool.iterator.DatapoolIteratorSequentialPrivate"); // Initialize the datapool to traverse the first equivalence class. dpIterator.dpInitialize(datapool,0); }참고:- IDatapoolFactory 로드 메소드의 두 번째 매개변수는 데이터풀 인스턴스를 공유하는지 여부를 나타냅니다. true인 경우 데이터풀 캐시에서 데이터풀의 기존 사본을 확인합니다. false인 경우 데이터풀은 개인용 인스턴스입니다. 공유 데이터풀 인스턴스를 수정하면 다른 사용자에게 영향을 줄 수 있으므로 제한된 환경에만 권장됩니다.
- 데이터풀을 프로그램적으로 편집하려면 org.eclipse.hyades.edit.datapool을 가져오십시오.
- IDatapoolFactory open 메소드의 두 번째 매개변수는 반복기 유형을 나타냅니다. 공유 데이터풀에는 DatapoolIteratorSequentialPrivate를 사용하십시오.
- testMyShoppingCartConstructor 메소드를 수정하여 shoppingCartDatapool을 활용하십시오.
public void testMyShoppingCartConstructor() throws Exception { MyShoppingCart cart = new MyShoppingCart(); // Traverse through datapool... // Test if constructor initializes each flower record appropriately while(!dpIterator.dpDone()) { String Description = dpIterator.dpCurrent().getCell("Description").getStringValue(); double datapoolPrice = dpIterator.dpCurrent().getCell("Price").getDoubleValue(); // Test if the flower is accounted for in the application Double applicationPrice; assertNotNull(applicationPrice = (Double)cart.myFlowers.get(Description)); // Test that the application price equals the price in the datapool assertTrue(applicationPrice.doubleValue() == datapoolPrice); dpIterator.dpNext(); } } - MyShoppingCartTest.java를 저장하십시오. 파일 메뉴에서 파일 > 저장을 선택하십시오.
- testArtifact에 데이터풀을 추가하십시오.
- 테스트 Perspective를 여십시오. 테스트 네비게이터에서 testDeployment를 두 번 클릭하여 편집기에서 여십시오.
- 쌍 탭에서 testAsset을 선택하고 열기...를 클릭하십시오.
- 테스트 자산 탭에서 추가...를 클릭하십시오. 데이터풀을 선택하고 확인을 클릭하십시오. 자산을 저장하십시오.
- 사용자 정의 배치를 사용하여 테스트를 실행하십시오.
- 테스트 Perspective를 여십시오. 테스트 네비게이터에서 MyShoppingCartTest 테스트 스위트를 마우스 오른쪽 단추로 클릭하고 실행 도구 > 실행...을 선택하십시오. 실행 구성 대화 상자가 나타납니다.
- 실행 구성의 왼쪽 분할창에서 MyShoppingCartTest 테스트 스위트를 선택하십시오.
- 실행 구성의 오른쪽 분할창에서, 시작하기 전에 섹션에서 작성한 배치를 선택하십시오.
- 테스트 로그 탭에서 기본값 사용 옵션을 지우고 위치에 대한 datapoolExample 프로젝트 폴더를 선택하십시오.
- 실행을 클릭하여 테스트를 실행하십시오.
- 선택한 배치에 암호화된 데이터풀이 포함되어 있는 경우 테스트를 실행한 후 배치에 포함되어 있는 암호화된 각 데이터풀의 비밀번호가 필요한 대화 상자가 표시됩니다.
- 테스트 네비게이터에 나타나는 새 MyShoppingCartTest 테스트 로그를 두 번 클릭하십시오. MyShoppingCartTest 테스트 로그가 나타납니다. 테스트 결과 세부사항을 보려면 이벤트 탭을 선택하십시오.
관련 개념
공통 테스트 태스크 및 개념
관련 태스크
테스트 배치 작성
테스트에 변수 데이터 제공
수동으로 JUnit 테스트 작성
이 글은 스프링노트에서 작성되었습니다.
db2 backup db BF to D:\DB_Backup
db2 restore db BF from d:\DB_Backup taken at 20090407165045
SQL2517W The restored database was migrated to the current release. Migration
returned sqlcode "0" and tokens "".
이 글은 스프링노트에서 작성되었습니다.
AIX 5.3에
apache, php 등을 설치하려다 보니.. 좀 힘들다..
몇가지 유용한 사이트를 찾았다.
http://www.ibm.com/developerworks/wikis/display/WikiPtype/aixopen
http://whitebear.tistory.com/87
이 글은 스프링노트에서 작성되었습니다.
AIX와 HP-UX의 Command를 일목요연하게 정리해 놓은 블로그가 있다.
http://blog.naver.com/underhack?Redirect=Log&logNo=20002886399
이 글은 스프링노트에서 작성되었습니다.
로그 파일에서 일정 패턴을 추출해 내는 script. 일정 시간 간격으로 계속해서 특정 로그 파일을 바라보며,
이전에 추출했던 파일과 비교(diff)하여, 새로 잡아진 로그만 추출하는 스크립트
cat monitoring.sh
#!/bin/sh
#$1 log path /app/waslog/accsvr11
#$2 timestamp 11:12:34
LOG_PATH=$1
TIMESTAMP=$2
LOG_FILE=SystemOut.log
#LOG_FILE=SystemOut_09.03.23_16.00.00.log
COUNT=0
STATUS=0
while [ ${COUNT} -lt 100 ]
do
cat $LOG_PATH/$LOG_FILE | grep ERR-CRITICAL > $LOG_PATH/${LOG_FILE}_ERR_FILTERED_${TIMESTAMP}
touch $LOG_PATH/${LOG_FILE}_ERR_FILTERED
diff $LOG_PATH/${LOG_FILE}_ERR_FILTERED_${TIMESTAMP} $LOG_PATH/${LOG_FILE}_ERR_FILTERED
STATUS=`echo $?`
rm -f $LOG_PATH/${LOG_FILE}_ERR_FILTERED
mv $LOG_PATH/${LOG_FILE}_ERR_FILTERED_${TIMESTAMP} $LOG_PATH/${LOG_FILE}_ERR_FILTERED
COUNT=`expr ${COUNT} + 1`
echo "Monitoring... ${TIMESTAMP} - ${COUNT} times Status = ${STATUS}"
# when diff emit something, the return code is 1, it means there's something to be notified
if [ ${STATUS} -eq 1 ]; then
exit 0
fi
sleep 10
done
이 글은 스프링노트에서 작성되었습니다.
[추후 보충 필요]
| http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r1/topic/com.ibm.websphere.ops.doc/info/reference/radtaskapped.html |
pcrea04@was:/app/was/BuildServer/scripts>cat rollout.sh
#!/bin/sh
# $1 EAR Name
# $2 username
# $3 password
# $4 edition
if [ $# -ne 4 ]; then
echo "[Usage]rollout.sh [EARName] [username] [password] [edition]"
exit 1
fi
WAS_HOME=/app/was/WebSphere/AppServer/
SCRIPT_HOME=/app/was/BuildServer/scripts
TMP_HOME=/app/was/BuildServer/tmp
$WAS_HOME/bin/wsadmin.sh -profileName Dmgr02 -conntype SOAP -host pcrea04 -port 8881 -username $2 -password $3 -lang jython -c "print AdminTask.rolloutEdition (['-appName', '$1', '-edition', '$4', '-params','{rolloutStrategy atomic}{resetStrategy hard}{drainageInterval 30}'])"
이 글은 스프링노트에서 작성되었습니다.
모 사이트에서, Build Forge에 번들된 DB2가 종종(?) 죽는 케이스가 발생되었다.
OS적인 문제도 있었지만, DB2에서 메모리를 처리하는 쪽에 오류가 있었단다.
Build Forge 7.0.X 버전에는 DB2 V9.1 Fix Pack 1이 같이 번들되어 있는데,
위의 문제는 Fix Pack2부터 고쳐져서 반영되었다. 현재 나와있는 V9.l의 최신 픽스는 6a이다.
아래에서 에러 내용과 패치를 다운받을 수 있다.
http://www-01.ibm.com/support/docview.wss?uid=swg1IY91411
이 글은 스프링노트에서 작성되었습니다.
성능이 떨어진다고 느낄때,
1) bf_messages 테이블의 데이터를 좀 없애 준다.
그리고, 시스템 설정에서, 각각의 오류/경고/정보 로그 등을 자주 삭제하도록 설정한다.
2) 좀더 밑바닥 세팅으로는 bf_message 및 bf_strings에 index를 추가해 준다.
CREATE INDEX bf_key_strings ON bf_strings (bf_key);;
CREATE INDEX BF_MESSAGES_MSGARGS ON bf_messages(bf_msgargs);
버전 7.1부터는 반영되어 있단다..
이 글은 스프링노트에서 작성되었습니다.
이올린에 북마크하기