//
// Copyright (c) 2024 Contributors to the Eclipse Foundation
//
// See the NOTICE file(s) distributed with this work for additional
// information regarding copyright ownership.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

= MicroProfile Telemetry logs TCK
Any MicroProfile Telemetry implementation must pass this test suite.
The TCK uses `TestNG` and `Arquillian`.

== Hardware Requirements
All systems should meet the following recommended hardware requirements:

    * CPU running at 2.0 GHz or higher
    * 4 GB of RAM or more
    * Network access to the Internet

== Software Requirements
You can run this TCK on platforms running the Solaris, Linux, Windows, and Mac OS with the following software installed:

    * Maven
    * JDK11+

== Dependencies
To enable the tests in your project you need to add the following dependency to your build:

[source, xml]
----

<dependency>
    <groupId>org.eclipse.microprofile.telemetry</groupId>
    <artifactId>microprofile-telemetry-logs-tck</artifactId>
    <version>1.0</version>
    <scope>test</scope>
</dependency>

----

If you want to run the logs tests, you can specify the application logging tests in the `tck-suite.xml`. E.g. 

[source, xml]
----
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="microprofile-telemetry-logs-TCK" verbose="2" configfailurepolicy="continue" >
    <test name="telemetry-logs-tests" verbose="10">
        <packages>
            <package name="org.eclipse.microprofile.telemetry.logs.tck.application.*" />
        </packages>
    </test>
</suite>
----

== Runtime Initialization Tests

To test that the OpenTelemetry instance is set properly at runtime initialization, configure the runtime with `otel.sdk.disabled=false`/`OTEL_SDK_DISABLED=FALSE` as a system property or environment variable. With the properly configured runtime, include the required test in the `tck-suite.xml`:

[source, xml]
----
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="microprofile-telemetry-logs-TCK" verbose="2" configfailurepolicy="continue" >
    <test name="telemetry-logs-tests" verbose="10">
        <packages>
            <package name="org.eclipse.microprofile.telemetry.logs.tck.config.*" />
        </packages>
    </test>
</suite>
----

== Logging File Configuration 
OpenTelemetry logs are sent to stdout in the tests. Ensure logs written to stdout are captured in a file and set the system property `log.file.path` to the file containing the log output when running the logs TCK. For example:

[source, xml]
----
mptelemetry.tck.log.file.path=console.log
----

== Configuration in Apache Maven pom.xml
If you use Apache Maven then the tests are run via the `maven-surefire-plugin`

[source, xml]
----
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>tck-suite.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>
    </plugins>
</build>
----

== Running as a Scanned Dependency
You can also run the TCK as a scanned dependency.

=== Surefire Configuration in your pom.xml
Once you've added the dependency, you don't need a `tck-suite.xml` you can just scan the dependency for tests.

[source, xml]
----
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
            <configuration>
                <dependenciesToScan>
                    <dependency>org.eclipse.microprofile.telemetry:microprofile-telemetry-logs-tck</dependency>
                </dependenciesToScan>
            </configuration>
        </plugin>
    </plugins>
</build>
----
