aboutsummaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authordanielhanrahan <daniel.hanrahan@est.tech>2024-08-22 17:39:58 +0100
committerdanielhanrahan <daniel.hanrahan@est.tech>2025-02-13 10:20:00 +0000
commit3ce7fde27b0f3b9d87a1566070347af708c4b3c6 (patch)
tree4be384bb156bd66ceaa8297324515057d46cec73 /.github
parentee4e49556be15ef5f881403f1cd70fab8daa68f4 (diff)
Add healthchecks for docker-compose for k6 and CSIT
To improve reliability and consistency of healthchecks in k6 and CSIT tests, they are implemented in docker-compose. This commit adds fail-fast logic, where k6 and CSITs will abort immediately if the containers won't start. Implementation: - Add healthchecks for docker containers used in tests. - Change k6 & CSIT tests to use docker healthchecks. - Tests will abort if containers are not healthy. - Start-up timeout for CPS containers is 90 seconds - Start-up timeout for other containers is 60 seconds Other Improvements: - Add --quiet-pull option to suppress junk output in Jenkins logs. - Add kpi.env file containing environment variables for KPI pipeline, just like endurance.env. This allows same code to run either suite. - Changed from port range to port number for Postgres exporter, since only a single instance runs, to be consistent with other containers Issue-ID: CPS-2630 Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech> Change-Id: I50929ca4061bb844fca87a0d6c3103aaa2c45e0b
Diffstat (limited to '.github')
0 files changed, 0 insertions, 0 deletions
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
/*-
 * ============LICENSE_START=======================================================
 * ONAP Policy Model
 * ================================================================================
 * Copyright (C) 2019 Nordix Foundation.
 * Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
 * ================================================================================
 * 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.
 *
 * SPDX-License-Identifier: Apache-2.0
 * ============LICENSE_END=========================================================
 */

package org.onap.policy.models.base;

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import org.onap.policy.common.parameters.annotations.Pattern;
import org.onap.policy.common.utils.validation.Assertions;

@Embeddable
@Getter
@EqualsAndHashCode(callSuper = false)
public class PfTimestampKey extends PfKeyImpl {
    private static final long serialVersionUID = -8410208962541783805L;

    private static final String TIMESTAMP_TOKEN = "timeStamp";

    @Column(name = NAME_TOKEN, length = 120)
    @Pattern(regexp = NAME_REGEXP)
    private String name;

    @Column(name = VERSION_TOKEN, length = 20)
    @Pattern(regexp = VERSION_REGEXP)
    private String version;

    @Column(name = TIMESTAMP_TOKEN)
    private Date timeStamp;


    /**
     * The default constructor creates a null concept key.
     */
    public PfTimestampKey() {
        this(NULL_KEY_NAME, NULL_KEY_VERSION, new Date(0));
    }

    /**
     * Copy constructor.
     *
     * @param copyConcept the concept to copy from
     */
    public PfTimestampKey(@NonNull final PfTimestampKey copyConcept) {
        super(copyConcept);
        long millis = copyConcept.getTimeStamp().getTime();
        this.timeStamp = new Date(millis);
    }

    /**
     * Constructor to create a key with the specified name and version.
     *
     * @param name the key name
     * @param version the key version
     * @param timeStamp the timestamp of key
     */
    public PfTimestampKey(@NonNull final String name, @NonNull final String version,
            @NonNull final Date timeStamp) {
        super(name, version);
        this.timeStamp = new Date(timeStamp.getTime());
    }

    /**
     * Constructor to create a key using the key and version from the specified key ID.
     *
     * @param id the key ID in a format that respects the KEY_ID_REGEXP
     */
    public PfTimestampKey(final String id) {
        super(id.substring(0, id.lastIndexOf(':')));
        this.timeStamp = new Date(Long.parseLong(id.substring(id.lastIndexOf(':') + 1)));
    }

    @Override
    public String getId() {
        return getName() + ':' + getVersion() + ':' + getTimeStamp().getTime();
    }

    /**
     * Get a null key.
     *
     * @return a null key
     */
    public static final PfTimestampKey getNullKey() {
        return new PfTimestampKey(PfKey.NULL_KEY_NAME, PfKey.NULL_KEY_VERSION, new Date(0));
    }

    @Override
    public String toString() {
        return "PfTimestampKey(name=" + getName() + ", version=" + getVersion() + ", timestamp="
                + getTimeStamp().getTime() + ")";
    }

    @Override
    public boolean isNewerThan(@NonNull PfKey otherKey) {
        Assertions.instanceOf(otherKey, PfTimestampKey.class);

        final PfTimestampKey otherConceptKey = (PfTimestampKey) otherKey;

        if (this.equals(otherConceptKey)) {
            return false;
        }

        if (!timeStamp.equals(otherConceptKey.timeStamp)) {
            return timeStamp.after(otherConceptKey.timeStamp);
        }

        return super.isNewerThan(otherKey);
    }

    public void setTimeStamp(@NonNull final Date timeStamp) {
        this.timeStamp = new Date(timeStamp.getTime());
    }

    @Override
    public boolean isNullKey() {
        return super.isNullKey() && getTimeStamp().getTime() == 0;
    }

    @Override
    public int compareTo(@NonNull final PfConcept otherObj) {
        int result = super.compareTo(otherObj);
        if (0 == result) {
            final PfTimestampKey other = (PfTimestampKey) otherObj;
            return timeStamp.compareTo(other.timeStamp);
        }
        return result;
    }

    @Override
    public void setName(@NonNull String name) {
        this.name = Assertions.validateStringParameter(NAME_TOKEN, name, getNameRegEx());
    }

    @Override
    public void setVersion(@NonNull String version) {
        this.version = Assertions.validateStringParameter(VERSION_TOKEN, version, getVersionRegEx());
    }
}