| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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. |
| */ |
| |
| package org.apache.ignite.platform; |
| |
| import java.util.Collections; |
| import java.util.List; |
| import java.util.Map; |
| import org.apache.ignite.Ignite; |
| import org.apache.ignite.cache.CacheMetrics; |
| import org.apache.ignite.cluster.ClusterNode; |
| import org.apache.ignite.compute.ComputeJob; |
| import org.apache.ignite.compute.ComputeJobAdapter; |
| import org.apache.ignite.compute.ComputeJobResult; |
| import org.apache.ignite.compute.ComputeTaskAdapter; |
| import org.apache.ignite.internal.binary.BinaryRawWriterEx; |
| import org.apache.ignite.internal.processors.platform.PlatformContext; |
| import org.apache.ignite.internal.processors.platform.cache.PlatformCache; |
| import org.apache.ignite.internal.processors.platform.memory.PlatformMemory; |
| import org.apache.ignite.internal.processors.platform.memory.PlatformOutputStream; |
| import org.apache.ignite.internal.processors.platform.utils.PlatformUtils; |
| import org.apache.ignite.internal.util.typedef.F; |
| import org.apache.ignite.resources.IgniteInstanceResource; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| /** |
| * Test task writing predefined metrics values to a stream. |
| */ |
| public class PlatformCacheWriteMetricsTask extends ComputeTaskAdapter<Long, Object> { |
| /** {@inheritDoc} */ |
| @NotNull @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Long ptr) { |
| return Collections.singletonMap(new Job(ptr), F.first(subgrid)); |
| } |
| |
| /** {@inheritDoc} */ |
| @Nullable @Override public Object reduce(List<ComputeJobResult> results) { |
| return results.get(0).getData(); |
| } |
| |
| /** |
| * Job. |
| */ |
| private static class Job extends ComputeJobAdapter { |
| /** Grid. */ |
| @IgniteInstanceResource |
| protected transient Ignite ignite; |
| |
| /** Stream ptr. */ |
| private final long ptr; |
| |
| /** |
| * Constructor. |
| * |
| * @param ptr Stream ptr. |
| */ |
| private Job(long ptr) { |
| this.ptr = ptr; |
| } |
| |
| /** {@inheritDoc} */ |
| @Nullable @Override public Object execute() { |
| PlatformContext ctx = PlatformUtils.platformContext(ignite); |
| |
| try (PlatformMemory mem = ctx.memory().get(ptr)) { |
| PlatformOutputStream out = mem.output(); |
| BinaryRawWriterEx writer = ctx.writer(out); |
| |
| PlatformCache.writeCacheMetrics(writer, new TestCacheMetrics()); |
| |
| out.synchronize(); |
| } |
| |
| return true; |
| } |
| } |
| |
| /** |
| * Predefined metrics. |
| */ |
| private static class TestCacheMetrics implements CacheMetrics { |
| /** {@inheritDoc} */ |
| @Override public long getCacheHits() { |
| return 1; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getCacheHitPercentage() { |
| return 2; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getCacheMisses() { |
| return 3; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getCacheMissPercentage() { |
| return 4; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getCacheGets() { |
| return 5; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getCachePuts() { |
| return 6; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getCacheRemovals() { |
| return 7; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getCacheEvictions() { |
| return 8; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getAverageGetTime() { |
| return 9; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getAveragePutTime() { |
| return 10; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getAverageRemoveTime() { |
| return 11; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getAverageTxCommitTime() { |
| return 12; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getAverageTxRollbackTime() { |
| return 13; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getCacheTxCommits() { |
| return 14; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getCacheTxRollbacks() { |
| return 15; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public String name() { |
| return "myCache"; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getOffHeapGets() { |
| return 16; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getOffHeapPuts() { |
| return 17; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getOffHeapRemovals() { |
| return 18; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getOffHeapEvictions() { |
| return 19; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getOffHeapHits() { |
| return 20; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getOffHeapHitPercentage() { |
| return 21; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getOffHeapMisses() { |
| return 22; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getOffHeapMissPercentage() { |
| return 23; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getOffHeapEntriesCount() { |
| return 24; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getOffHeapPrimaryEntriesCount() { |
| return 25; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getOffHeapBackupEntriesCount() { |
| return 26; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getOffHeapAllocatedSize() { |
| return 27; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getSize() { |
| return 29; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getKeySize() { |
| return 30; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean isEmpty() { |
| return true; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getDhtEvictQueueCurrentSize() { |
| return 31; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxThreadMapSize() { |
| return 32; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxXidMapSize() { |
| return 33; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxCommitQueueSize() { |
| return 34; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxPrepareQueueSize() { |
| return 35; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxStartVersionCountsSize() { |
| return 36; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxCommittedVersionsSize() { |
| return 37; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxRolledbackVersionsSize() { |
| return 38; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxDhtThreadMapSize() { |
| return 39; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxDhtXidMapSize() { |
| return 40; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxDhtCommitQueueSize() { |
| return 41; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxDhtPrepareQueueSize() { |
| return 42; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxDhtStartVersionCountsSize() { |
| return 43; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxDhtCommittedVersionsSize() { |
| return 44; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTxDhtRolledbackVersionsSize() { |
| return 45; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean isWriteBehindEnabled() { |
| return true; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getWriteBehindFlushSize() { |
| return 46; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getWriteBehindFlushThreadCount() { |
| return 47; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getWriteBehindFlushFrequency() { |
| return 48; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getWriteBehindStoreBatchSize() { |
| return 49; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getWriteBehindTotalCriticalOverflowCount() { |
| return 50; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getWriteBehindCriticalOverflowCount() { |
| return 51; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getWriteBehindErrorRetryCount() { |
| return 52; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getWriteBehindBufferSize() { |
| return 53; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public String getKeyType() { |
| return "foo"; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public String getValueType() { |
| return "bar"; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean isStoreByValue() { |
| return true; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean isStatisticsEnabled() { |
| return true; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean isManagementEnabled() { |
| return true; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean isReadThrough() { |
| return true; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean isWriteThrough() { |
| return true; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean isValidForReading() { |
| return true; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean isValidForWriting() { |
| return true; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public String getTxKeyCollisions() { |
| return ""; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getTotalPartitionsCount() { |
| return 54; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public int getRebalancingPartitionsCount() { |
| return 55; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getKeysToRebalanceLeft() { |
| return 56; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getRebalancingKeysRate() { |
| return 57; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getRebalancingBytesRate() { |
| return 58; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getHeapEntriesCount() { |
| return 59; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long estimateRebalancingFinishTime() { |
| return 60; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long rebalancingStartTime() { |
| return 61; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getEstimatedRebalancingFinishTime() { |
| return 62; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getRebalancingStartTime() { |
| return 63; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getRebalanceClearingPartitionsLeft() { |
| return 64; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getCacheSize() { |
| return 65; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getRebalancedKeys() { |
| return 66; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getEstimatedRebalancingKeys() { |
| return 67; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getEntryProcessorPuts() { |
| return 68; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getEntryProcessorReadOnlyInvocations() { |
| return 69; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getEntryProcessorInvocations() { |
| return 70; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getEntryProcessorHits() { |
| return 71; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getEntryProcessorHitPercentage() { |
| return 72; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getEntryProcessorMissPercentage() { |
| return 73; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getEntryProcessorMisses() { |
| return 74; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getEntryProcessorAverageInvocationTime() { |
| return 75; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getEntryProcessorMinInvocationTime() { |
| return 76; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public float getEntryProcessorMaxInvocationTime() { |
| return 77; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long getEntryProcessorRemovals() { |
| return 78; |
| } |
| } |
| } |