1a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin/* 2a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 3a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 5a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * This code is free software; you can redistribute it and/or modify it 6a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * under the terms of the GNU General Public License version 2 only, as 7a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * published by the Free Software Foundation. 8a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 9a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * This code is distributed in the hope that it will be useful, but WITHOUT 10a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * version 2 for more details (a copy is included in the LICENSE file that 13a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * accompanied this code). 14a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 15a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * You should have received a copy of the GNU General Public License version 16a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 2 along with this work; if not, write to the Free Software Foundation, 17a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 19a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * or visit www.oracle.com if you need additional information or have any 21a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * questions. 22a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin */ 23a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinpackage java.util.stream; 24a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 25a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.ArrayList; 26a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.Collections; 27a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.HashMap; 28a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.List; 29a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.Map; 30a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 31a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport org.testng.Assert; 32a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport org.testng.ITestResult; 33a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport org.testng.annotations.AfterMethod; 34a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport org.testng.annotations.BeforeMethod; 35a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport org.testng.annotations.Test; 36a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 37a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin/** 38a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * LoggingTestCase 39a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 40a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin */ 41a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin@Test 42a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinpublic class LoggingTestCase extends Assert { 43a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin private Map<String, Object> context = new HashMap<>(); 44a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 45a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @BeforeMethod 46a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void before() { 47a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin context.clear(); 48a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 49a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 50a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @AfterMethod 51a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void after(ITestResult result) { 52a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin if (!result.isSuccess()) { 53a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin List<Object> list = new ArrayList<>(); 54a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin Collections.addAll(list, result.getParameters()); 55a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin list.add(context.toString()); 56a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin result.setParameters(list.toArray(new Object[list.size()])); 57a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 58a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 59a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 60a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin protected void setContext(String key, Object value) { 61a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin context.put(key, value); 62a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 63a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 64a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin protected void clearContext(String key) { 65a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin context.remove(key); 66a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 67a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin} 68