aboutsummaryrefslogtreecommitdiffstats
path: root/test-apis-ci/src/test/resources/logback-test.xml
blob: 03ce9d1243289025c9634c3f973471016e15fdab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- only one line, shut up logback ! -->
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </encoder>
    </appender>
    <root level="off">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
ht: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
/*-
 * ============LICENSE_START=======================================================
 * openECOMP : APP-C
 * ================================================================================
 * Copyright (C) 2017 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.
 * ============LICENSE_END=========================================================
 */

package org.openecomp.appc.executionqueue.impl;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;

import org.openecomp.appc.executionqueue.MessageExpirationListener;
import org.openecomp.appc.executionqueue.helper.Util;
import org.openecomp.appc.executionqueue.impl.object.QueueMessage;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;

public class QueueManager {

    private LinkedBlockingQueue<QueueMessage<? extends Runnable>> queue;

    private MessageExpirationListener listener;

    private static int MAX_QUEUE_SIZE = Util.getExecutionQueSize();

    private static int MAX_THREAD_SIZE = Util.getThreadPoolSize();

    private ExecutorService messageExecutor;

    private static final EELFLogger logger =
            EELFManager.getInstance().getLogger(QueueManager.class);

    private QueueManager(){
        init();
    }

    private static class QueueManagerHolder {
        private static final QueueManager INSTANCE = new QueueManager();
    }

    public static QueueManager getInstance() {
        return QueueManagerHolder.INSTANCE;
    }

    private void init(){
        queue = new LinkedBlockingQueue<QueueMessage<? extends Runnable>>(MAX_QUEUE_SIZE);
        messageExecutor = Executors.newFixedThreadPool(MAX_THREAD_SIZE,Util.getThreadFactory(true));

        for(int i=0;i<MAX_THREAD_SIZE;i++){
            messageExecutor.submit(new Runnable() {
                @Override
                public void run() {
                    while (true){
                        try{
                            QueueMessage<? extends Runnable> queueMessage = queue.take();
                            if(messageExpired(queueMessage)){
                                logger.debug("Message expired "+ queueMessage.getMessage());
                                if(listener != null){
                                    listener.onMessageExpiration(queueMessage.getMessage());
                                }
                                else{
                                    logger.warn("Listener not available for expired message ");
                                }
                            }
                            else{
                                queueMessage.getMessage().run();
                            }
                        } catch (Exception e) {
                            logger.error("Error in startMessagePolling method of ExecutionQueueServiceImpl" + e.getMessage());
                        }
                    }
                }
            });
        }
    }

    public void setListener(MessageExpirationListener listener) {
        this.listener = listener;
    }

    public boolean enqueueTask(QueueMessage<? extends Runnable> queueMessage) {
        return queue.offer(queueMessage);
    }

    private boolean messageExpired(QueueMessage<? extends Runnable> queueMessage) {
        if(queueMessage.getExpirationTime() != null){
            return queueMessage.getExpirationTime().getTime() < System.currentTimeMillis();
        }
        return false;
    }

}