2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2022 Nordix Foundation
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.cps.aop
23 import org.aspectj.lang.ProceedingJoinPoint
24 import org.aspectj.lang.reflect.MethodSignature
25 import org.onap.cps.spi.exceptions.DataValidationException
26 import spock.lang.Specification
27 import java.util.logging.Level
28 import java.util.logging.Logger
30 class CpsLoggingAspectServiceSpec extends Specification {
32 private static final Logger logger = Logger.getLogger("org.onap.cps")
34 def mockProceedingJoinPoint = Mock(ProceedingJoinPoint)
35 def mockMethodSignature = Mock(MethodSignature);
36 def objectUnderTest = new CpsLoggingAspectService()
39 mockMethodSignature.getDeclaringType() >> this.getClass()
40 mockMethodSignature.getDeclaringType().getSimpleName() >> 'CpsLoggingAspectServiceSpec'
41 mockMethodSignature.getName() >> 'logMethodExecutionTime'
42 mockProceedingJoinPoint.getSignature() >> mockMethodSignature
45 def 'Log method execution time for log level : #logLevel.'() {
46 given: 'mock valid pointcut arguments and set log level to #logLevel'
47 mockProceedingJoinPoint.getArgs() >> 'dataspace-name'
48 logger.setLevel(logLevel)
49 when: 'aop intercepts cps method'
50 objectUnderTest.logMethodExecutionTime(mockProceedingJoinPoint)
51 then: 'expected number of method execution'
52 expectedNumberOfMethodExecution * mockMethodSignature.getName()
53 where: 'the following log levels are used'
54 logLevel || expectedNumberOfMethodExecution
60 def 'Exception thrown during method execution.'() {
61 given: 'some exception is created'
62 mockProceedingJoinPoint.proceed() >> { throw new Exception("some exception") }
63 when: 'aop intercepts cps method and start calculation of time'
64 objectUnderTest.logMethodExecutionTime(mockProceedingJoinPoint)
65 then: 'some exception is thrown'