You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/12/22 02:57:07 UTC

[1/5] incubator-ranger git commit: RANGER-794: Ranger policy engine performance measurement

Repository: incubator-ranger
Updated Branches:
  refs/heads/master ea559d39d -> fbf4f3533


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/src/main/assembly/ranger-tools.xml
----------------------------------------------------------------------
diff --git a/src/main/assembly/ranger-tools.xml b/src/main/assembly/ranger-tools.xml
new file mode 100644
index 0000000..ca793a4
--- /dev/null
+++ b/src/main/assembly/ranger-tools.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<assembly>
+  <id>ranger-tools</id>
+  <formats>
+     <format>tar.gz</format>
+	 <format>zip</format>
+  </formats>
+  <baseDirectory>${project.name}-${project.version}-ranger-tools</baseDirectory>
+  <includeBaseDirectory>true</includeBaseDirectory>
+  <moduleSets>
+    <moduleSet>
+      <binaries>
+        <includeDependencies>true</includeDependencies>
+        <unpack>false</unpack>
+        <directoryMode>755</directoryMode>
+        <fileMode>644</fileMode>
+        <dependencySets>
+          <dependencySet>
+            <outputDirectory>/lib</outputDirectory>
+              <includes>
+                <include>commons-cli:commons-cli</include>
+                <include>commons-logging:commons-logging:jar:${commons.logging.version}</include>
+                <include>commons-lang:commons-lang</include>
+                <include>com.google.code.gson:gson</include>
+                <include>log4j:log4j</include>
+                <include>commons-configuration:commons-configuration:jar:${commons.configuration.version}</include>
+                <include>org.apache.hadoop:hadoop-common:jar:${hadoop-common.version}</include>
+                <include>org.apache.hadoop:hadoop-common-plus:jar:${hadoop-common.version}</include>
+                <include>org.apache.hadoop:hadoop-auth:jar:${hadoop-common.version}</include>
+                <include>org.apache.hadoop:hadoop-hdfs:jar:${hadoop.version}</include>
+                <include>org.eclipse.persistence:eclipselink</include>
+                <include>org.eclipse.persistence:javax.persistence</include>
+                <include>commons-collections:commons-collections</include>
+                <include>com.sun.jersey:jersey-bundle</include>
+                <include>commons-io:commons-io</include>
+                <include>com.google.guava:guava:jar:${google.guava.version}</include>
+                <include>org.apache.httpcomponents:httpclient:jar:${httpcomponent.httpclient.version}</include>
+                <include>org.apache.httpcomponents:httpcore:jar:${httpcomponent.httpcore.version}</include>
+                <include>org.apache.httpcomponents:httpmime:jar:${httpcomponent.httpmime.version}</include>
+                <include>org.noggit:noggit:jar:${noggit.version}</include>
+                <include>org.codehaus.jackson:jackson-core-asl</include>
+                <include>org.codehaus.jackson:jackson-jaxrs</include>
+                <include>org.codehaus.jackson:jackson-mapper-asl</include>
+                <include>org.codehaus.jackson:jackson-xc</include>
+                <include>security_plugins.ranger-plugins-common:ranger-plugins-common</include>
+                <include>security_plugins.ranger-plugins-audit:ranger-plugins-audit</include>
+              </includes>
+              <unpack>false</unpack>
+            </dependencySet>
+        </dependencySets>
+        <outputDirectory>/dist</outputDirectory>
+      </binaries>
+      <includes>
+        <include>org.apache.ranger:ranger-tools</include>
+      </includes>
+    </moduleSet>
+    <moduleSet>
+      <binaries>
+        <includeDependencies>false</includeDependencies>
+        <unpack>false</unpack>
+        <directoryMode>755</directoryMode>
+        <fileMode>644</fileMode>
+        <dependencySets>
+          <dependencySet>
+          <outputDirectory>/lib</outputDirectory>
+          <includes>
+            <include>org.apache.ranger:credentialbuilder</include>
+            <include>org.apache.ranger:ranger-util</include>
+          </includes>
+          <unpack>false</unpack>
+          </dependencySet>
+        </dependencySets>
+        <outputDirectory>/lib</outputDirectory>
+      </binaries>
+      <includes>
+        <include>org.apache.ranger:credentialbuilder</include>
+        <include>org.apache.ranger:ranger-util</include>
+      </includes>
+    </moduleSet>
+  </moduleSets>  
+  <fileSets>
+    <fileSet>
+      <directoryMode>755</directoryMode>
+      <fileMode>644</fileMode>
+      <outputDirectory>/conf</outputDirectory>
+      <directory>ranger-tools/conf</directory>
+    </fileSet>
+    <fileSet>
+      <directoryMode>755</directoryMode>
+      <fileMode>644</fileMode>
+      <outputDirectory>/testdata</outputDirectory>
+      <directory>ranger-tools/testdata</directory>
+    </fileSet>
+    <fileSet>
+      <directoryMode>755</directoryMode>
+      <outputDirectory>/</outputDirectory>
+      <directory>${project.build.directory}</directory>
+      <includes>
+        <include>version</include>
+      </includes>
+      <fileMode>444</fileMode>
+    </fileSet>
+  </fileSets>
+  <files>
+    <file>
+      <source>ranger-tools/scripts/ranger-perftester.sh</source>
+      <outputDirectory>/</outputDirectory>
+      <destName>ranger-perftester.sh</destName>
+      <fileMode>755</fileMode>
+    </file>
+    <file>
+      <source>ranger-tools/scripts/README.txt</source>
+      <outputDirectory>/</outputDirectory>
+      <destName>README.txt</destName>
+      <fileMode>644</fileMode>
+    </file>
+  </files>
+</assembly>


[5/5] incubator-ranger git commit: RANGER-794: Ranger policy engine performance measurement

Posted by ma...@apache.org.
RANGER-794: Ranger policy engine performance measurement


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/fbf4f353
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/fbf4f353
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/fbf4f353

Branch: refs/heads/master
Commit: fbf4f3533d0c39d018d2ac92538f77761ca461d3
Parents: ea559d3
Author: Abhay Kulkarni <ak...@hortonworks.com>
Authored: Mon Dec 21 17:53:51 2015 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Mon Dec 21 17:53:51 2015 -0800

----------------------------------------------------------------------
 .../RangerFileBasedTagRetriever.java            |    149 +
 .../contextenricher/RangerTagEnricher.java      |      9 +-
 .../ranger/plugin/util/PerfDataRecorder.java    |    113 +
 .../plugin/util/RangerPerfCollectorTracer.java  |     37 +
 .../ranger/plugin/util/RangerPerfTracer.java    |     34 +-
 .../plugin/util/RangerPerfTracerFactory.java    |     39 +
 pom.xml                                         |      3 +
 ranger-tools/.gitignore                         |      2 +
 ranger-tools/conf/log4j.properties              |     50 +
 ranger-tools/pom.xml                            |     69 +
 ranger-tools/scripts/README.txt                 |     65 +
 ranger-tools/scripts/ranger-perftester.sh       |     32 +
 ranger-tools/scripts/summary.awk                |     17 +
 .../ranger/policyengine/CommandLineParser.java  |    275 +
 .../ranger/policyengine/PerfTestClient.java     |    161 +
 .../ranger/policyengine/PerfTestEngine.java     |    126 +
 .../ranger/policyengine/PerfTestOptions.java    |     60 +
 .../RangerPolicyenginePerfTester.java           |    140 +
 .../ranger/policyengine/PerfTesterTest.java     |    112 +
 ranger-tools/src/test/resources/commandline     |     20 +
 .../src/test/resources/log4j.properties         |     50 +
 .../test/resources/testdata/test_modules.txt    |     24 +
 .../resources/testdata/test_requests_hive.json  |     10 +
 .../testdata/test_servicepolicies_hive.json     |    488 +
 .../testdata/test_servicetags_hive.json         |     62 +
 ranger-tools/testdata/test_modules.txt          |     23 +
 ranger-tools/testdata/test_requests_hive.json   |    257 +
 .../testdata/test_servicepolicies_hive.json     | 252899 ++++++++++++++++
 .../testdata/test_servicetags_hive.json         |  23966 ++
 src/main/assembly/ranger-tools.xml              |    134 +
 30 files changed, 279413 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerFileBasedTagRetriever.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerFileBasedTagRetriever.java b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerFileBasedTagRetriever.java
new file mode 100644
index 0000000..95291be
--- /dev/null
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerFileBasedTagRetriever.java
@@ -0,0 +1,149 @@
+/*
+ * 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.ranger.plugin.contextenricher;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ranger.plugin.util.ServiceTags;
+
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Map;
+
+public class RangerFileBasedTagRetriever extends RangerTagRetriever {
+	private static final Log LOG = LogFactory.getLog(RangerFileBasedTagRetriever.class);
+
+
+	private URL serviceTagsFileURL;
+	private String serviceTagsFileName;
+
+	@Override
+	public void init(Map<String, String> options) {
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> init()" );
+		}
+		String serviceTagsFileNameProperty = "serviceTagsFileName";
+		String serviceTagsDefaultFileName = "/testdata/test_servicetags_hive.json";
+
+		if (StringUtils.isNotBlank(serviceName) && serviceDef != null && StringUtils.isNotBlank(appId)) {
+			InputStream serviceTagsFileStream = null;
+
+
+			// Open specified file from options- it should contain service-tags
+
+			serviceTagsFileName = options != null? options.get(serviceTagsFileNameProperty) : null;
+
+			serviceTagsFileName = serviceTagsFileName == null ? serviceTagsDefaultFileName : serviceTagsFileName;
+
+			File f = new File(serviceTagsFileName);
+
+			if (f.exists() && f.isFile() && f.canRead()) {
+				try {
+					serviceTagsFileStream = new FileInputStream(f);
+					serviceTagsFileURL = f.toURI().toURL();
+				} catch (FileNotFoundException exception) {
+					LOG.error("Error processing input file:" + serviceTagsFileName + " or no privilege for reading file " + serviceTagsFileName, exception);
+				} catch (MalformedURLException malformedException) {
+					LOG.error("Error processing input file:" + serviceTagsFileName + " cannot be converted to URL " + serviceTagsFileName, malformedException);
+				}
+			} else {
+
+				URL fileURL = getClass().getResource(serviceTagsFileName);
+				if (fileURL == null) {
+					if (!serviceTagsFileName.startsWith("/")) {
+						fileURL = getClass().getResource("/" + serviceTagsFileName);
+					}
+				}
+
+				if (fileURL == null) {
+					fileURL = ClassLoader.getSystemClassLoader().getResource(serviceTagsFileName);
+					if (fileURL == null) {
+						if (!serviceTagsFileName.startsWith("/")) {
+							fileURL = ClassLoader.getSystemClassLoader().getResource("/" + serviceTagsFileName);
+						}
+					}
+				}
+
+				if (fileURL != null) {
+
+					try {
+						serviceTagsFileStream = fileURL.openStream();
+						serviceTagsFileURL = fileURL;
+					} catch (Exception exception) {
+						LOG.error(serviceTagsFileName + " is not a file", exception);
+					}
+				} else {
+					LOG.warn("Error processing input file: URL not found for " + serviceTagsFileName + " or no privilege for reading file " + serviceTagsFileName);
+				}
+			}
+
+		} else {
+			LOG.error("FATAL: Cannot find service/serviceDef/serviceTagsFile to use for retrieving tags. Will NOT be able to retrieve tags.");
+		}
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== init() : serviceTagsFileName=" + serviceTagsFileName);
+		}
+	}
+
+	@Override
+	public ServiceTags retrieveTags(long lastKnownVersion) throws InterruptedException {
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> retrieveTags(lastKnownVersion=" + lastKnownVersion + ", serviceTagsFilePath=" + serviceTagsFileName);
+		}
+
+		ServiceTags serviceTags = null;
+
+		if (serviceTagsFileURL != null) {
+			try {
+				InputStream serviceTagsFileStream = serviceTagsFileURL.openStream();
+				Reader reader = new InputStreamReader(serviceTagsFileStream);
+
+				Gson gsonBuilder = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z")
+						.setPrettyPrinting()
+						.create();
+
+				serviceTags = gsonBuilder.fromJson(reader, ServiceTags.class);
+
+				if (serviceTags.getTagVersion() <= lastKnownVersion) {
+					// No change in serviceTags
+					serviceTags = null;
+				}
+			} catch (Exception e) {
+				LOG.warn("Error processing input file: or no privilege for reading file " + serviceTagsFileName);
+			}
+		} else {
+			LOG.error("Error reading file: " + serviceTagsFileName);
+		}
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== retrieveTags(lastKnownVersion=" + lastKnownVersion);
+		}
+
+		return serviceTags;
+	}
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
index e9fc42c..c8fc056 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
@@ -304,15 +304,16 @@ public class RangerTagEnricher extends RangerAbstractContextEnricher {
 
 				try {
 
-					populateTags();
-
+					// Sleep first and then fetch tags
 					if (pollingIntervalMs > 0) {
 						Thread.sleep(pollingIntervalMs);
 					} else {
 						break;
 					}
+					populateTags();
+
 				} catch (InterruptedException excp) {
-					LOG.info("RangerTagRefresher(pollingIntervalMs=" + pollingIntervalMs + ").run() : interrupted! Exiting thread", excp);
+					LOG.debug("RangerTagRefresher(pollingIntervalMs=" + pollingIntervalMs + ").run() : interrupted! Exiting thread", excp);
 					break;
 				}
 			}
@@ -329,7 +330,7 @@ public class RangerTagEnricher extends RangerAbstractContextEnricher {
 				RangerPerfTracer perf = null;
 
 				if(RangerPerfTracer.isPerfTraceEnabled(PERF_ENRICHER_LOG)) {
-					perf = RangerPerfTracer.getPerfTracer(PERF_ENRICHER_LOG, "RangerTagRefresher.populateTags(serviceName=" + tagRetriever.getServiceName() + ",lastKnownVersion" + lastKnownVersion + ")");
+					perf = RangerPerfTracer.getPerfTracer(PERF_ENRICHER_LOG, "RangerTagRefresher.populateTags(serviceName=" + tagRetriever.getServiceName() + ",lastKnownVersion=" + lastKnownVersion + ")");
 				}
 				serviceTags = tagRetriever.retrieveTags(lastKnownVersion);
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/agents-common/src/main/java/org/apache/ranger/plugin/util/PerfDataRecorder.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/PerfDataRecorder.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/PerfDataRecorder.java
new file mode 100644
index 0000000..72da8e8
--- /dev/null
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/PerfDataRecorder.java
@@ -0,0 +1,113 @@
+/*
+ * 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.ranger.plugin.util;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
+
+public class PerfDataRecorder {
+	private static final Log LOG  = LogFactory.getLog(PerfDataRecorder.class);
+	private static final Log PERF = RangerPerfTracer.getPerfLogger(PerfDataRecorder.class);
+
+	static PerfDataRecorder instance = null;
+	private Map<String, PerfStatistic> perfStatistics = new HashMap<String, PerfStatistic>();
+
+	public static void initialize(List<String> names) {
+		if (getPerfDataRecorder() == null) {
+			instance = new PerfDataRecorder();
+		}
+		instance.init(names);
+	}
+
+	public static PerfDataRecorder getPerfDataRecorder() {
+		return instance;
+	}
+
+	public void dumpStatistics() {
+		for (Map.Entry<String, PerfStatistic> entry : perfStatistics.entrySet()) {
+
+			String tag = entry.getKey();
+			PerfStatistic perfStatistic = entry.getValue();
+
+			long averageTimeSpent = 0L;
+			long minTimeSpent = 0L;
+			long maxTimeSpent = 0L;
+			if (perfStatistic.numberOfInvocations.get() != 0L) {
+				averageTimeSpent = perfStatistic.millisecondsSpent.get()/perfStatistic.numberOfInvocations.get();
+				minTimeSpent = perfStatistic.minTimeSpent.get();
+				maxTimeSpent = perfStatistic.maxTimeSpent.get();
+			}
+
+			String logMsg = "[" + tag + "]" +
+                             " execCount:" + perfStatistic.numberOfInvocations +
+                             ", totalTimeTaken:" + perfStatistic.millisecondsSpent +
+                             ", maxTimeTaken:" + maxTimeSpent +
+                             ", minTimeTaken:" + minTimeSpent +
+                             ", avgTimeTaken:" + averageTimeSpent;
+
+			LOG.info(logMsg);
+			PERF.debug(logMsg);
+		}
+	}
+
+	void record(String tag, long elapsedTime) {
+		PerfStatistic perfStatistic = perfStatistics.get(tag);
+		if (perfStatistic != null) {
+			perfStatistic.addPerfDataItem(elapsedTime);
+		}
+	}
+
+	private void init(List<String> names) {
+		if (CollectionUtils.isNotEmpty(names)) {
+			for (String name : names) {
+				// Create structure
+				perfStatistics.put(name, new PerfStatistic());
+			}
+		}
+	}
+
+	private class PerfStatistic {
+		private AtomicLong numberOfInvocations = new AtomicLong(0L);
+		private AtomicLong millisecondsSpent = new AtomicLong(0L);
+		private AtomicLong minTimeSpent = new AtomicLong(Long.MAX_VALUE);
+		private AtomicLong maxTimeSpent = new AtomicLong(Long.MIN_VALUE);
+
+		void addPerfDataItem(final long timeTaken) {
+			numberOfInvocations.getAndIncrement();
+			millisecondsSpent.getAndAdd(timeTaken);
+
+			long min = minTimeSpent.get();
+			if (timeTaken < min) {
+				minTimeSpent.compareAndSet(min, timeTaken);
+			}
+
+			long max = maxTimeSpent.get();
+			if (timeTaken > max) {
+				maxTimeSpent.compareAndSet(max, timeTaken);
+			}
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfCollectorTracer.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfCollectorTracer.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfCollectorTracer.java
new file mode 100644
index 0000000..e7b3865
--- /dev/null
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfCollectorTracer.java
@@ -0,0 +1,37 @@
+/*
+ * 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.ranger.plugin.util;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+
+public class RangerPerfCollectorTracer extends RangerPerfTracer {
+	private final PerfDataRecorder recorder;
+
+	public RangerPerfCollectorTracer(Log logger, String tag, String data, PerfDataRecorder recorder) {
+		super(logger, tag, data);
+		this.recorder = recorder;
+	}
+
+	@Override
+	public void log() {
+		recorder.record(tag, getElapsedTime());
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracer.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracer.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracer.java
index fc84bcd..175c4e4 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracer.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracer.java
@@ -24,10 +24,13 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.commons.lang.StringUtils;
 
 public class RangerPerfTracer {
-	private final Log    logger;
-	private final String tag;
+	protected final Log    logger;
+	protected final String tag;
+	protected final String data;
 	private final long   startTimeMs;
 
+	private final static String tagEndMarker = "(";
+
 	public static Log getPerfLogger(String name) {
 		return LogFactory.getLog("ranger.perf." + name);
 	}
@@ -37,15 +40,27 @@ public class RangerPerfTracer {
 	}
 
 	public static boolean isPerfTraceEnabled(Log logger) {
-		return logger.isInfoEnabled();
+		return logger.isDebugEnabled();
 	}
 
 	public static RangerPerfTracer getPerfTracer(Log logger, String tag) {
-		return logger.isInfoEnabled() ? new RangerPerfTracer(logger, tag) : null;
+		String data = "";
+		String realTag = "";
+
+		if (tag != null) {
+			int indexOfTagEndMarker = StringUtils.indexOf(tag, tagEndMarker);
+			if (indexOfTagEndMarker != -1) {
+				realTag = StringUtils.substring(tag, 0, indexOfTagEndMarker);
+				data = StringUtils.substring(tag, indexOfTagEndMarker);
+			} else {
+				realTag = tag;
+			}
+		}
+		return RangerPerfTracerFactory.getPerfTracer(logger, realTag, data);
 	}
 
-	public static RangerPerfTracer getPerfTracer(Log logger, Object... tagParts) {
-		return logger.isInfoEnabled() ? new RangerPerfTracer(logger, StringUtils.join(tagParts)) : null;
+	public static RangerPerfTracer getPerfTracer(Log logger, String tag, String data) {
+		return RangerPerfTracerFactory.getPerfTracer(logger, tag, data);
 	}
 
 	public static void log(RangerPerfTracer tracer) {
@@ -54,9 +69,10 @@ public class RangerPerfTracer {
 		}
 	}
 
-	public RangerPerfTracer(Log logger, String tag) {
+	public RangerPerfTracer(Log logger, String tag, String data) {
 		this.logger = logger;
 		this.tag    = tag;
+		this.data	= data;
 		startTimeMs = System.currentTimeMillis();
 	}
 
@@ -73,8 +89,8 @@ public class RangerPerfTracer {
 	}
 
 	public void log() {
-		if(logger.isInfoEnabled()) {
-			logger.info("[PERF] " + tag + ": " + getElapsedTime());
+		if(logger.isDebugEnabled()) {
+			logger.debug("[PERF] " + tag + data + ": " + getElapsedTime());
 		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracerFactory.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracerFactory.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracerFactory.java
new file mode 100644
index 0000000..8db2d45
--- /dev/null
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracerFactory.java
@@ -0,0 +1,39 @@
+/*
+ * 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.ranger.plugin.util;
+
+import org.apache.commons.logging.Log;
+
+public class RangerPerfTracerFactory {
+
+	private static PerfDataRecorder perfDataRecorder = PerfDataRecorder.getPerfDataRecorder();
+
+	static RangerPerfTracer getPerfTracer(Log logger, String tag, String data) {
+
+		RangerPerfTracer ret = null;
+
+		if (perfDataRecorder != null) {
+			ret = new RangerPerfCollectorTracer(logger, tag, data, perfDataRecorder);
+		} else if (logger.isDebugEnabled()) {
+			ret = new RangerPerfTracer(logger, tag, data);
+		}
+		return ret;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 108bd17..23ef49e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -107,6 +107,7 @@
   <module>ranger-storm-plugin-shim</module>
   <module>ranger-kafka-plugin-shim</module>
   <module>ranger-examples</module>
+    <module>ranger-tools</module>
   </modules>
   <properties>
         <javac.source.version>1.7</javac.source.version>
@@ -409,6 +410,7 @@
              <descriptor>src/main/assembly/tagsync.xml</descriptor>
              <descriptor>src/main/assembly/migration-util.xml</descriptor>
              <descriptor>src/main/assembly/kms.xml</descriptor>
+             <descriptor>src/main/assembly/ranger-tools.xml</descriptor>
              <descriptor>src/main/assembly/ranger-src.xml</descriptor>
            </descriptors>
          </configuration>
@@ -514,6 +516,7 @@
           <exclude>**/samples/**/*.json</exclude>
           <exclude>**/.externalToolBuilders/*</exclude>
           <exclude>*.patch</exclude>
+          <exclude>**/testdata/*.json</exclude>
           <exclude>atlassian-ide-plugin.xml</exclude>
 	  <exclude>**/.pydevproject</exclude>
         </excludes>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/.gitignore
----------------------------------------------------------------------
diff --git a/ranger-tools/.gitignore b/ranger-tools/.gitignore
new file mode 100644
index 0000000..5ac84b1
--- /dev/null
+++ b/ranger-tools/.gitignore
@@ -0,0 +1,2 @@
+/target/
+ranger-perftester.iml

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/conf/log4j.properties
----------------------------------------------------------------------
diff --git a/ranger-tools/conf/log4j.properties b/ranger-tools/conf/log4j.properties
new file mode 100644
index 0000000..ccb9db4
--- /dev/null
+++ b/ranger-tools/conf/log4j.properties
@@ -0,0 +1,50 @@
+# 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.
+
+##-- To prevent junits from cluttering the build run by default all test runs send output to null appender 
+log4j.appender.devnull=org.apache.log4j.varia.NullAppender
+# ranger.root.logger=FATAL,devnull
+
+##-- uncomment the following line during during development/debugging so see debug messages during test run to be emitted to console
+ranger.root.logger=INFO,console
+
+log4j.rootLogger=${ranger.root.logger}
+
+# Logging Threshold
+log4j.threshold=ALL
+
+#
+# console
+# Add "console" to rootlogger above if you want to use this
+#
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.target=System.err
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %L %m%n
+
+#
+# ranger.perf log level
+#
+ranger.perf.logger=DEBUG,PERF
+ranger.perf.log.file=ranger-perf-test.log
+
+log4j.logger.ranger.perf=${ranger.perf.logger}
+log4j.additivity.ranger.perf=false
+
+log4j.appender.PERF=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.PERF.File=${ranger.perf.log.file}
+log4j.appender.PERF.layout=org.apache.log4j.PatternLayout
+log4j.appender.PERF.layout.ConversionPattern=%m%n
+log4j.appender.PERF.DatePattern=.yyyy-MM-dd

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/pom.xml
----------------------------------------------------------------------
diff --git a/ranger-tools/pom.xml b/ranger-tools/pom.xml
new file mode 100644
index 0000000..f7347f7
--- /dev/null
+++ b/ranger-tools/pom.xml
@@ -0,0 +1,69 @@
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>ranger</artifactId>
+        <groupId>org.apache.ranger</groupId>
+        <version>0.5.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ranger-tools</artifactId>
+    <packaging>jar</packaging>
+
+    <name>Ranger Tools</name>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+            <version>1.3.1</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>${commons.lang.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>security_plugins.ranger-plugins-common</groupId>
+            <artifactId>ranger-plugins-common</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/scripts/README.txt
----------------------------------------------------------------------
diff --git a/ranger-tools/scripts/README.txt b/ranger-tools/scripts/README.txt
new file mode 100644
index 0000000..9eb71ba
--- /dev/null
+++ b/ranger-tools/scripts/README.txt
@@ -0,0 +1,65 @@
+# 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.
+
+This file describes how to build, unpackage and run the performance testing tool.
+
+1. 	Build Apache Ranger using the following command.
+	% mvn clean compile package assembly:assembly
+
+	The following artifact will be created under target directory.
+
+	target/ranger-0.5.0-ranger-tools.tar.gz
+
+2. 	Copy this artifact to the directory where you want to run the tool.
+
+	% cp target/ranger-0.5.0-ranger-tools.tar.gz <perf-tool-run-dir>
+	% cd <perf-tool-run-dir>
+
+3.	Unzip the artifact.
+
+	% tar xvfz ranger-0.5.0-ranger-tools.tar.gz
+
+	This will create the following directory structure under <perf-tool-run-dir>
+
+	ranger-0.5.0-ranger-tools
+	ranger-0.5.0-ranger-tools/conf
+	ranger-0.5.0-ranger-tools/dist
+	ranger-0.5.0-ranger-tools/lib
+	ranger-0.5.0-ranger-tools/scripts
+	ranger-0.5.0-ranger-tools/testdata
+
+4.	% cd ranger-0.5.0-ranger-tools
+
+5.	Setup configuration
+
+	Following sample data files are packaged with the perf-tool:
+		service-policies   - testdata/test_servicepolicies_hive.json
+		requests           - testdata/test_requests_hive.json
+		modules-to-profile - testdata/test_modules.txt
+		service-tags       - testdata/test_servicetags_hive.json (used only for tag-based policies; referenced from service-policies file.
+
+	Please review the contents of these files and modify (or copy/modify) to suite your policy and request needs.
+
+	Update conf/log4j.properties to specify the filename where perf run results will be written to. Property to update is 'ranger.perf.logger'.
+
+5.	Run the tool with the command,
+
+	% ./ranger-perftester.sh -s <service-policies-file>  -r <requests-file> -p <profiled-modules-file> -c <number-of-concurrent-clients> -n <number-of-times-requests-file-to-be-run>
+
+	Example:
+	% ./ranger-perftester.sh -s testdata/test_servicepolicies_hive.json  -r testdata/test_requests_hive.json -p testdata/test_modules.txt -c 2 -n 1
+
+6. 	At the end of the run, the performance-statistics are printed in the log file in conf/log4j.properties file.
+

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/scripts/ranger-perftester.sh
----------------------------------------------------------------------
diff --git a/ranger-tools/scripts/ranger-perftester.sh b/ranger-tools/scripts/ranger-perftester.sh
new file mode 100755
index 0000000..46c8e0e
--- /dev/null
+++ b/ranger-tools/scripts/ranger-perftester.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+# 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.
+
+cdir=$(cd "$(dirname "$0")"; pwd)
+cp="${cdir}/dist/*:${cdir}/lib/*:${cdir}/conf:."
+
+if [ "${JAVA_HOME}" != "" ]
+then
+	export JAVA_HOME
+	PATH="${JAVA_HOME}/bin:${PATH}"
+	export PATH
+fi
+
+JAVA_CMD="java -cp ${cp} org.apache.ranger.policyengine.RangerPolicyenginePerfTester"
+
+cd ${cdir}
+
+echo "JAVA command = $JAVA_CMD " "$@"
+$JAVA_CMD "$@"

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/scripts/summary.awk
----------------------------------------------------------------------
diff --git a/ranger-tools/scripts/summary.awk b/ranger-tools/scripts/summary.awk
new file mode 100755
index 0000000..16e49f3
--- /dev/null
+++ b/ranger-tools/scripts/summary.awk
@@ -0,0 +1,17 @@
+#!/bin/sh
+# 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.
+
+awk '{ORS=" "; print $NF; for (i=6; i<NF; i++) print $i;print "\n" }' $1 | sort -n -r

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/main/java/org/apache/ranger/policyengine/CommandLineParser.java
----------------------------------------------------------------------
diff --git a/ranger-tools/src/main/java/org/apache/ranger/policyengine/CommandLineParser.java b/ranger-tools/src/main/java/org/apache/ranger/policyengine/CommandLineParser.java
new file mode 100644
index 0000000..a45d71a
--- /dev/null
+++ b/ranger-tools/src/main/java/org/apache/ranger/policyengine/CommandLineParser.java
@@ -0,0 +1,275 @@
+/*
+ * 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.ranger.policyengine;
+
+import org.apache.commons.cli.*;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Arrays;
+
+public class CommandLineParser
+{
+    static final Log LOG      = LogFactory.getLog(CommandLineParser.class);
+
+    private String servicePoliciesFileName;
+    private String[] requestFileNames;
+    private String statCollectionFileName;
+
+    private URL servicePoliciesFileURL;
+    private URL[] requestFileURLs;
+    private URL statCollectionFileURL;
+
+
+    private int concurrentClientCount = 1;
+    private int iterationsCount = 1;
+
+    private Options options = new Options();
+
+    CommandLineParser() {}
+
+    final PerfTestOptions parse(final String[] args) {
+        PerfTestOptions ret = null;
+        if (parseArguments(args) && validateInputFiles()) {
+            // Instantiate a data-object and return
+            ret = new PerfTestOptions(servicePoliciesFileURL, requestFileURLs, statCollectionFileURL, concurrentClientCount, iterationsCount);
+        } else {
+            showUsage(-1);
+        }
+        return ret;
+    }
+
+    // Parse the arguments
+
+    /* Arguments :
+            -s servicePolicies-file-name
+            -c concurrent-client-count
+            -r request-file-name-list
+            -n number-of-iterations
+            -p modules-to-collect-stats
+
+            If the concurrent-client-count is more than the number of files in the request-file-name-list,
+            then reuse the request-file-names in a round-robin way
+
+    */
+
+    final boolean parseArguments(final String[] args) {
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("==> parseArguments()");
+        }
+        boolean ret = false;
+
+        options.addOption("h", "help", false, "show help.");
+        options.addOption("s", "service-policies", true, "Policies File Name");
+        options.addOption("r", "requests", true, "Request Definition File Name");
+        options.addOption("p", "statistics", true, "Modules for stat collection File Name");
+        options.addOption("c", "clients", true, "Number of concurrent clients");
+        options.addOption("n", "cycles", true, "Number of iterations");
+
+        org.apache.commons.cli.CommandLineParser commandLineParser = new DefaultParser();
+
+        try {
+            CommandLine commandLine = commandLineParser.parse(options, args);
+
+            if (commandLine.hasOption("h")) {
+                showUsage(0);
+            }
+
+            servicePoliciesFileName = commandLine.getOptionValue("s");
+            requestFileNames = commandLine.getOptionValues("r");
+            statCollectionFileName = commandLine.getOptionValue("p");
+
+            concurrentClientCount = 1;
+            String clientOptionValue = commandLine.getOptionValue("c");
+            if (clientOptionValue != null) {
+                concurrentClientCount = Integer.parseInt(clientOptionValue);
+            }
+
+            iterationsCount = 1;
+            String iterationsOptionValue = commandLine.getOptionValue("n");
+            if (iterationsOptionValue != null) {
+                iterationsCount = Integer.parseInt(iterationsOptionValue);
+            }
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("servicePoliciesFileName=" + servicePoliciesFileName + ", requestFileName=" + Arrays.toString(requestFileNames));
+                LOG.debug("concurrentClientCount=" + concurrentClientCount + ", iterationsCount=" + iterationsCount);
+            }
+
+            ret = true;
+        } catch (Exception exception) {
+            LOG.error("Error processing command-line arguments: ", exception);
+        }
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("<== parseArguments() : " + ret);
+        }
+
+        return ret;
+    }
+
+    final boolean validateInputFiles() {
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("==> validateInputFiles()");
+        }
+
+        boolean ret = false;
+
+        if (servicePoliciesFileName != null) {
+            this.servicePoliciesFileURL = getInputFileURL(servicePoliciesFileName);
+            if (servicePoliciesFileURL != null) {
+                if (requestFileNames != null) {
+                    if (validateRequestFiles()) {
+                        if (statCollectionFileName != null) {
+                            statCollectionFileURL = getInputFileURL(statCollectionFileName);
+                            ret = statCollectionFileURL != null;
+                        } else {
+                            LOG.error("Error processing stat-collection-module file");
+                        }
+                    }
+                } else {
+                    LOG.error("Error processing requests file: No requests files provided.");
+                }
+            } else {
+                LOG.error("Error processing service-policies file: unreadable service-policies file: " + servicePoliciesFileName);
+            }
+        } else {
+            LOG.error("Error processing service-policies file: null service-policies file");
+        }
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("<== validateInputFiles(): " + ret);
+        }
+
+        return ret;
+    }
+
+    final boolean validateRequestFiles() {
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("==> validateRequestFiles()");
+        }
+        boolean ret = requestFileNames.length > 0;
+
+        if (ret) {
+            requestFileURLs = new URL[requestFileNames.length];
+
+            for (int i = 0; ret && i < requestFileNames.length; i++) {
+                if (requestFileNames[i] != null) {
+                    if ((requestFileURLs[i] = getInputFileURL(requestFileNames[i])) == null) {
+                        LOG.error("Cannot read file: " + requestFileNames[i]);
+                        ret = false;
+                    }
+                } else {
+                    LOG.error("Error processing request-file: null input file-name for request-file");
+                    ret = false;
+                }
+            }
+        }
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("<== validateRequestFiles(): " + ret);
+        }
+        return ret;
+    }
+
+    public static URL getInputFileURL(final String name) {
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("==> getResourceFileURL(" + name + ")");
+        }
+        URL ret = null;
+        InputStream in = null;
+
+
+        if (StringUtils.isNotBlank(name)) {
+
+            File f = new File(name);
+
+            if (f.exists() && f.isFile() && f.canRead()) {
+                try {
+
+                    in = new FileInputStream(f);
+                    ret = f.toURI().toURL();
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug("URL:" + ret);
+                    }
+
+                } catch (FileNotFoundException exception) {
+                    LOG.error("Error processing input file:" + name + " or no privilege for reading file " + name, exception);
+                } catch (MalformedURLException malformedException) {
+                    LOG.error("Error processing input file:" + name + " cannot be converted to URL " + name, malformedException);
+                }
+            } else {
+
+                URL fileURL = CommandLineParser.class.getResource(name);
+                if (fileURL == null) {
+                    if (!name.startsWith("/")) {
+                        fileURL = CommandLineParser.class.getResource("/" + name);
+                    }
+                }
+
+                if (fileURL == null) {
+                    fileURL = ClassLoader.getSystemClassLoader().getResource(name);
+                    if (fileURL == null) {
+                        if (!name.startsWith("/")) {
+                            fileURL = ClassLoader.getSystemClassLoader().getResource("/" + name);
+                        }
+                    }
+                }
+
+                if (fileURL != null) {
+                    try {
+                        in = fileURL.openStream();
+                        ret = fileURL;
+                    } catch (Exception exception) {
+                        LOG.error(name + " cannot be opened:", exception);
+                    }
+                } else {
+                    LOG.warn("Error processing input file: URL not found for " + name + " or no privilege for reading file " + name);
+                }
+            }
+        }
+        if (in != null) {
+            try {
+                in.close();
+            } catch (Exception e) {
+                // Ignore
+            }
+        }
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("<== getResourceFileURL(" + name + ", URL=" + ret + ")");
+        }
+        return ret;
+    }
+
+    void showUsage(int exitCode) {
+        HelpFormatter formater = new HelpFormatter();
+        formater.printHelp("perfTester", options);
+
+        LOG.info("Exiting...");
+
+        System.exit(exitCode);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestClient.java
----------------------------------------------------------------------
diff --git a/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestClient.java b/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestClient.java
new file mode 100644
index 0000000..b88d670
--- /dev/null
+++ b/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestClient.java
@@ -0,0 +1,161 @@
+/*
+ * 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.ranger.policyengine;
+
+import com.google.gson.*;
+import com.google.gson.reflect.TypeToken;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ranger.plugin.policyengine.*;
+
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.lang.reflect.Type;
+import java.net.URL;
+import java.util.List;
+
+public class PerfTestClient extends Thread {
+	static final Log LOG      = LogFactory.getLog(PerfTestClient.class);
+
+	final PerfTestEngine perfTestEngine;
+	final int clientId;
+	final URL requestFileURL;
+	final int maxCycles;
+
+	List<RequestData> requests = null;
+	static Gson gsonBuilder  = null;
+
+	static {
+
+		gsonBuilder = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z")
+				.setPrettyPrinting()
+				.registerTypeAdapter(RangerAccessRequest.class, new RangerAccessRequestDeserializer())
+				.registerTypeAdapter(RangerAccessResource.class, new RangerResourceDeserializer())
+				.create();
+	}
+
+	public PerfTestClient(final PerfTestEngine perfTestEngine, final int clientId,  final URL requestFileURL, final int maxCycles) {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> PerfTestClient(clientId=" + clientId + ", maxCycles=" + maxCycles +")" );
+		}
+
+		this.perfTestEngine = perfTestEngine;
+		this.clientId = clientId;
+		this.requestFileURL = requestFileURL;
+		this.maxCycles = maxCycles;
+
+		setName("PerfTestClient-" + clientId);
+		setDaemon(true);
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== PerfTestClient(clientId=" + clientId + ", maxCycles=" + maxCycles +")" );
+		}
+	}
+
+	public boolean init() {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> init()" );
+		}
+
+		boolean ret = false;
+
+		Reader reader = null;
+
+		try {
+
+			InputStream in = requestFileURL.openStream();
+
+			reader = new InputStreamReader(in);
+
+			Type listType = new TypeToken<List<RequestData>>() {
+			}.getType();
+
+			requests = gsonBuilder.fromJson(reader, listType);
+
+			ret = true;
+		}
+		catch (Exception excp) {
+			LOG.error("Error opening request data stream or loading load request data from file, URL=" + requestFileURL, excp);
+		}
+		finally {
+			if (reader != null) {
+				try {
+					reader.close();
+				} catch (Exception excp) {
+					LOG.error("Error closing file ", excp);
+				}
+			}
+		}
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== init() : " + ret );
+		}
+		return ret;
+	}
+
+	@Override
+	public void run() {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> run()" );
+		}
+
+		try {
+			for (int i = 0; i < maxCycles; i++) {
+				for (RequestData data : requests) {
+					perfTestEngine.execute(data.request);
+				}
+			}
+		} catch (Exception excp) {
+			LOG.error("PerfTestClient.run() : interrupted! Exiting thread", excp);
+		}
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== run()" );
+		}
+	}
+
+	private class RequestData {
+		public String              name;
+		public RangerAccessRequest request;
+		public RangerAccessResult result;
+	}
+
+	static class RangerAccessRequestDeserializer implements JsonDeserializer<RangerAccessRequest> {
+		@Override
+		public RangerAccessRequest deserialize(JsonElement jsonObj, Type type,
+											   JsonDeserializationContext context) throws JsonParseException {
+			RangerAccessRequestImpl ret = gsonBuilder.fromJson(jsonObj, RangerAccessRequestImpl.class);
+
+			ret.setAccessType(ret.getAccessType()); // to force computation of isAccessTypeAny and isAccessTypeDelegatedAdmin
+
+			return ret;
+		}
+	}
+
+	static class RangerResourceDeserializer implements JsonDeserializer<RangerAccessResource> {
+		@Override
+		public RangerAccessResource deserialize(JsonElement jsonObj, Type type,
+												JsonDeserializationContext context) throws JsonParseException {
+			return gsonBuilder.fromJson(jsonObj, RangerAccessResourceImpl.class);
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestEngine.java
----------------------------------------------------------------------
diff --git a/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestEngine.java b/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestEngine.java
new file mode 100644
index 0000000..1b5f6fd
--- /dev/null
+++ b/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestEngine.java
@@ -0,0 +1,126 @@
+/*
+ * 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.ranger.policyengine;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ranger.plugin.audit.RangerDefaultAuditHandler;
+import org.apache.ranger.plugin.policyengine.*;
+import org.apache.ranger.plugin.util.ServicePolicies;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
+
+public class PerfTestEngine {
+	static final Log LOG      = LogFactory.getLog(PerfTestEngine.class);
+
+	private final URL servicePoliciesFileURL;
+	private RangerPolicyEngine policyEvaluationEngine;
+
+	public PerfTestEngine(final URL servicePoliciesFileURL) {
+		this.servicePoliciesFileURL = servicePoliciesFileURL;
+	}
+
+	public boolean init() {
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> init()");
+		}
+
+		boolean ret = false;
+
+		Gson gsonBuilder = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z")
+				.setPrettyPrinting()
+				.create();
+
+		Reader reader = null;
+		ServicePolicies servicePolicies;
+
+		try {
+			InputStream in = servicePoliciesFileURL.openStream();
+
+			reader = new InputStreamReader(in);
+
+			servicePolicies = gsonBuilder.fromJson(reader, ServicePolicies.class);
+
+			RangerPolicyEngineOptions engineOptions = new RangerPolicyEngineOptions();
+			engineOptions.disableTagPolicyEvaluation = false;
+
+			policyEvaluationEngine = new RangerPolicyEngineImpl("perf-test", servicePolicies, engineOptions);
+
+			ret = true;
+
+		} catch (Exception excp) {
+			LOG.error("Error opening service-policies file or loading service-policies from file, URL=" + servicePoliciesFileURL, excp);
+		} finally {
+			if (reader != null) {
+				try {
+					reader.close();
+				} catch (Exception excp) {
+					LOG.error("Error closing file", excp);
+				}
+			}
+		}
+
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== init() : " + ret);
+		}
+
+		return ret;
+
+	}
+	public boolean execute(final RangerAccessRequest request) {
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> execute(" + request + ")");
+		}
+
+		boolean ret = true;
+
+		if (policyEvaluationEngine != null) {
+
+			RangerAccessResultProcessor auditHandler = null;
+
+			policyEvaluationEngine.preProcess(request);
+
+			RangerAccessResult result = policyEvaluationEngine.isAccessAllowed(request, auditHandler);
+		} else {
+			LOG.error("Error executing request: PolicyEngine is null!");
+		}
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== execute(" + request + ") : " + ret);
+		}
+
+		return ret;
+	}
+
+	public void cleanup() {
+		if (policyEvaluationEngine != null) {
+			policyEvaluationEngine.cleanup();
+			policyEvaluationEngine = null;
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestOptions.java
----------------------------------------------------------------------
diff --git a/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestOptions.java b/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestOptions.java
new file mode 100644
index 0000000..f30cbd7
--- /dev/null
+++ b/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestOptions.java
@@ -0,0 +1,60 @@
+/*
+ * 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.ranger.policyengine;
+
+
+import java.net.URL;
+
+public class PerfTestOptions {
+	private final URL servicePoliciesFileURL;
+	private final URL[] requestFileURLs;
+	private final URL statCollectionFileURL;
+
+
+	private final int concurrentClientCount;
+	private final int iterationsCount;
+
+	PerfTestOptions(URL servicePoliciesFileURL, URL[] requestFileURLs, URL statCollectionFileURL, int concurrentClientCount, int iterationsCount) {
+		this.servicePoliciesFileURL = servicePoliciesFileURL;
+		this.requestFileURLs = requestFileURLs;
+		this.statCollectionFileURL = statCollectionFileURL;
+		this.iterationsCount = iterationsCount;
+		this.concurrentClientCount = concurrentClientCount;
+	}
+
+	public URL getServicePoliciesFileURL() {
+		return  this.servicePoliciesFileURL;
+	}
+
+	public URL[] getRequestFileURLs() {
+		return this.requestFileURLs;
+	}
+
+	public URL getStatCollectionFileURL() {
+		return  this.statCollectionFileURL;
+	}
+
+	public int getConcurrentClientCount() {
+		return concurrentClientCount;
+	}
+
+	public int getIterationsCount() {
+		return iterationsCount;
+	}}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java
----------------------------------------------------------------------
diff --git a/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java b/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java
new file mode 100644
index 0000000..28cc558
--- /dev/null
+++ b/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java
@@ -0,0 +1,140 @@
+/*
+ * 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.ranger.policyengine;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ranger.plugin.util.PerfDataRecorder;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+
+public class RangerPolicyenginePerfTester {
+    static final Log LOG = LogFactory.getLog(RangerPolicyenginePerfTester.class);
+
+    public static void main(String[] args) {
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("==> RangerPolicyenginePerfTester.main()");
+        }
+
+        CommandLineParser commandLineParser = new CommandLineParser();
+
+        PerfTestOptions perfTestOptions = commandLineParser.parse(args);
+
+        URL statCollectionFileURL = perfTestOptions.getStatCollectionFileURL();
+
+        List<String> perfModuleNames = buildPerfModuleNames(statCollectionFileURL);
+
+        PerfDataRecorder.initialize(perfModuleNames);
+
+        URL servicePoliciesFileURL = perfTestOptions.getServicePoliciesFileURL();
+
+        PerfTestEngine perfTestEngine = new PerfTestEngine(servicePoliciesFileURL);
+        if (!perfTestEngine.init()) {
+            LOG.error("Error initializing test data. Existing...");
+            System.exit(1);
+        }
+
+        URL[] requestFileURLs = perfTestOptions.getRequestFileURLs();
+        int requestFilesCount = requestFileURLs.length;
+
+        int clientsCount = perfTestOptions.getConcurrentClientCount();
+        List<PerfTestClient> perfTestClients = new ArrayList<PerfTestClient>(clientsCount);
+
+        for (int i = 0; i < clientsCount; i++) {
+
+            URL requestFileURL = requestFileURLs[i % requestFilesCount];
+
+            PerfTestClient perfTestClient = new PerfTestClient(perfTestEngine, i, requestFileURL, perfTestOptions.getIterationsCount());
+
+            if (!perfTestClient.init()) {
+                LOG.error("Error initializing PerfTestClient: (id=" + i + ")");
+            } else {
+                perfTestClients.add(perfTestClient);
+            }
+        }
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Number of perfTestClients=" + perfTestClients.size());
+        }
+
+        for (PerfTestClient client : perfTestClients) {
+            try {
+                client.start();
+            } catch (Throwable t) {
+                LOG.error("Error in starting client: " + client.getName(), t);
+            }
+        }
+
+        LOG.info("Waiting for " + perfTestClients.size() + " clients to finish up");
+
+        for (PerfTestClient client : perfTestClients) {
+            try {
+                if (client.isAlive()) {
+                    LOG.info("Waiting for " + client.getName() + " to finish up.");
+                    client.join();
+                }
+            } catch (InterruptedException interruptedException) {
+                LOG.error("PerfTestClient.join() was interrupted");
+            }
+        }
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("<== RangerPolicyenginePerfTester.main()");
+        }
+
+        LOG.info("Completed performance-run");
+
+        perfTestEngine.cleanup();
+
+        PerfDataRecorder.getPerfDataRecorder().dumpStatistics();
+    }
+
+    private static List<String> buildPerfModuleNames(URL statCollectionFileURL) {
+        List<String> perfModuleNames = new ArrayList<String>();
+
+        try (
+                InputStream inStream = statCollectionFileURL.openStream();
+                InputStreamReader reader = new InputStreamReader(inStream, Charset.forName("UTF-8"));
+                BufferedReader br = new BufferedReader(reader);
+        ) {
+
+            String line;
+
+            while ((line = br.readLine()) != null) {
+                line = line.trim();
+                if (!line.isEmpty() && !line.startsWith("#")) {
+                    String[] moduleNames = line.split(" ");
+                    for (int i = 0; i < moduleNames.length; i++) {
+                        perfModuleNames.add(moduleNames[i]);
+                    }
+                }
+            }
+        } catch (Exception exception) {
+            System.out.println("Error reading arguments:" + exception);
+        }
+
+        return perfModuleNames;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/test/java/org/apache/ranger/policyengine/PerfTesterTest.java
----------------------------------------------------------------------
diff --git a/ranger-tools/src/test/java/org/apache/ranger/policyengine/PerfTesterTest.java b/ranger-tools/src/test/java/org/apache/ranger/policyengine/PerfTesterTest.java
new file mode 100644
index 0000000..2d7c52e
--- /dev/null
+++ b/ranger-tools/src/test/java/org/apache/ranger/policyengine/PerfTesterTest.java
@@ -0,0 +1,112 @@
+/*
+ * 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.ranger.policyengine;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.nio.charset.Charset;
+
+/**
+ * Unit test for simple App.
+ */
+public class PerfTesterTest
+    extends TestCase
+
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public PerfTesterTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( PerfTesterTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+
+    public void testMain() {
+
+        String[] args = readCommandLine();
+
+        if (args != null) {
+            RangerPolicyenginePerfTester.main(args);
+        }
+    }
+
+
+    public void testArgParsing() {
+        String[] args = readCommandLine();
+
+        if (args != null) {
+            CommandLineParser commandLineParser = new CommandLineParser();
+            PerfTestOptions parseResult = commandLineParser.parse(args);
+            assertNotNull(parseResult);
+        }
+    }
+
+    String[] readCommandLine() {
+        // Read arguments from a file - with hardcoded name 'commandline'
+
+        String[] ret = null;
+
+        URL commandLineFileURL = CommandLineParser.getInputFileURL("/commandline");
+        if (commandLineFileURL != null) {
+            try (
+                    InputStream inStream = commandLineFileURL.openStream();
+                    InputStreamReader reader = new InputStreamReader(inStream, Charset.forName("UTF-8"));
+                    BufferedReader br = new BufferedReader(reader);
+            ) {
+
+
+                String line;
+
+                while ((line = br.readLine()) != null) {
+                    line = line.trim();
+                    if (!line.isEmpty() && !line.startsWith("#")) {
+                        ret = line.split(" ");
+                        break;
+                    }
+                }
+
+            } catch (Exception exception) {
+                System.out.println("Error reading arguments:" + exception);
+            }
+        }
+        return ret;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/test/resources/commandline
----------------------------------------------------------------------
diff --git a/ranger-tools/src/test/resources/commandline b/ranger-tools/src/test/resources/commandline
new file mode 100644
index 0000000..9ea690e
--- /dev/null
+++ b/ranger-tools/src/test/resources/commandline
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+
+-s /testdata/test_servicepolicies_hive.json -r /testdata/test_requests_hive.json -p /testdata/test_modules.txt -c 3 -n 1

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/ranger-tools/src/test/resources/log4j.properties b/ranger-tools/src/test/resources/log4j.properties
new file mode 100644
index 0000000..a9a8881
--- /dev/null
+++ b/ranger-tools/src/test/resources/log4j.properties
@@ -0,0 +1,50 @@
+# 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.
+
+##-- To prevent junits from cluttering the build run by default all test runs send output to null appender 
+log4j.appender.devnull=org.apache.log4j.varia.NullAppender
+# ranger.root.logger=FATAL,devnull
+
+##-- uncomment the following line during during development/debugging so see debug messages during test run to be emitted to console
+ranger.root.logger=INFO,console
+
+log4j.rootLogger=${ranger.root.logger}
+
+# Logging Threshold
+log4j.threshold=ALL
+
+#
+# console
+# Add "console" to rootlogger above if you want to use this
+#
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.target=System.err
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %L %m%n
+
+#
+# ranger.perf log level
+#
+ranger.perf.logger=DEBUG,PERF
+ranger.perf.log.file=/tmp/ranger-perf-test.log
+
+log4j.logger.ranger.perf=${ranger.perf.logger}
+log4j.additivity.ranger.perf=false
+
+log4j.appender.PERF=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.PERF.File=${ranger.perf.log.file}
+log4j.appender.PERF.layout=org.apache.log4j.PatternLayout
+log4j.appender.PERF.layout.ConversionPattern=%m%n
+log4j.appender.PERF.DatePattern=.yyyy-MM-dd

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/test/resources/testdata/test_modules.txt
----------------------------------------------------------------------
diff --git a/ranger-tools/src/test/resources/testdata/test_modules.txt b/ranger-tools/src/test/resources/testdata/test_modules.txt
new file mode 100644
index 0000000..8eb5746
--- /dev/null
+++ b/ranger-tools/src/test/resources/testdata/test_modules.txt
@@ -0,0 +1,24 @@
+#
+# 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.
+#
+
+RangerTagEnricher.setServiceTags
+RangerPolicyEngine.init
+RangerPolicyEngine.preProcess
+RangerPolicyEngine.isAccessAllowedNoAudit
+

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/test/resources/testdata/test_requests_hive.json
----------------------------------------------------------------------
diff --git a/ranger-tools/src/test/resources/testdata/test_requests_hive.json b/ranger-tools/src/test/resources/testdata/test_requests_hive.json
new file mode 100644
index 0000000..0db7207
--- /dev/null
+++ b/ranger-tools/src/test/resources/testdata/test_requests_hive.json
@@ -0,0 +1,10 @@
+  [
+    {"name":"'select default/tbl-0/col-2;' for hrt_1",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-0","column":"col-2"}},
+      "accessType":"select","user":"hrt_1","userGroups":[],"requestData":"use default"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+  ]
+

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/test/resources/testdata/test_servicepolicies_hive.json
----------------------------------------------------------------------
diff --git a/ranger-tools/src/test/resources/testdata/test_servicepolicies_hive.json b/ranger-tools/src/test/resources/testdata/test_servicepolicies_hive.json
new file mode 100644
index 0000000..4d3a166
--- /dev/null
+++ b/ranger-tools/src/test/resources/testdata/test_servicepolicies_hive.json
@@ -0,0 +1,488 @@
+{
+  "serviceName": "cl1_hive",
+  "serviceId": 2,
+  "policies": [
+    {
+      "service": "cl1_hive",
+      "name": "cl1_hive-1-20151212014502",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "*"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "*"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "*"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            },
+            {
+              "type": "lock",
+              "isAllowed": true
+            },
+            {
+              "type": "all",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "ambari-qa"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": true,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [],
+      "allowExceptions": [],
+      "denyExceptions": [],
+      "id": 2,
+      "isEnabled": true
+    }
+  ],
+  "serviceDef": {
+    "name": "hive",
+    "implClass": "org.apache.ranger.services.hive.RangerServiceHive",
+    "label": "Hive Server2",
+    "options": {},
+    "configs": [
+      {
+        "itemId": 1,
+        "name": "username",
+        "type": "string",
+        "mandatory": true,
+        "validationRegEx": "",
+        "validationMessage": "",
+        "uiHint": "",
+        "label": "Username"
+      },
+      {
+        "itemId": 2,
+        "name": "password",
+        "type": "password",
+        "mandatory": true,
+        "validationRegEx": "",
+        "validationMessage": "",
+        "uiHint": "",
+        "label": "Password"
+      },
+      {
+        "itemId": 3,
+        "name": "jdbc.driverClassName",
+        "type": "string",
+        "mandatory": true,
+        "defaultValue": "org.apache.hive.jdbc.HiveDriver",
+        "validationRegEx": "",
+        "validationMessage": "",
+        "uiHint": ""
+      },
+      {
+        "itemId": 4,
+        "name": "jdbc.url",
+        "type": "string",
+        "mandatory": true,
+        "defaultValue": "",
+        "validationRegEx": "",
+        "validationMessage": "",
+        "uiHint": ""
+      },
+      {
+        "itemId": 5,
+        "name": "commonNameForCertificate",
+        "type": "string",
+        "mandatory": false,
+        "validationRegEx": "",
+        "validationMessage": "",
+        "uiHint": "",
+        "label": "Common Name for Certificate"
+      }
+    ],
+    "resources": [
+      {
+        "itemId": 1,
+        "name": "database",
+        "type": "string",
+        "level": 10,
+        "mandatory": true,
+        "lookupSupported": true,
+        "recursiveSupported": false,
+        "excludesSupported": true,
+        "matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+        "matcherOptions": {
+          "wildCard": "true",
+          "ignoreCase": "true"
+        },
+        "validationRegEx": "",
+        "validationMessage": "",
+        "uiHint": "",
+        "label": "Hive Database"
+      },
+      {
+        "itemId": 2,
+        "name": "table",
+        "type": "string",
+        "level": 20,
+        "parent": "database",
+        "mandatory": true,
+        "lookupSupported": true,
+        "recursiveSupported": false,
+        "excludesSupported": true,
+        "matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+        "matcherOptions": {
+          "wildCard": "true",
+          "ignoreCase": "true"
+        },
+        "validationRegEx": "",
+        "validationMessage": "",
+        "uiHint": "",
+        "label": "Hive Table"
+      },
+      {
+        "itemId": 3,
+        "name": "udf",
+        "type": "string",
+        "level": 20,
+        "parent": "database",
+        "mandatory": true,
+        "lookupSupported": true,
+        "recursiveSupported": false,
+        "excludesSupported": true,
+        "matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+        "matcherOptions": {
+          "wildCard": "true",
+          "ignoreCase": "true"
+        },
+        "validationRegEx": "",
+        "validationMessage": "",
+        "uiHint": "",
+        "label": "Hive UDF"
+      },
+      {
+        "itemId": 4,
+        "name": "column",
+        "type": "string",
+        "level": 30,
+        "parent": "table",
+        "mandatory": true,
+        "lookupSupported": true,
+        "recursiveSupported": false,
+        "excludesSupported": true,
+        "matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+        "matcherOptions": {
+          "wildCard": "true",
+          "ignoreCase": "true"
+        },
+        "validationRegEx": "",
+        "validationMessage": "",
+        "uiHint": "",
+        "label": "Hive Column"
+      }
+    ],
+    "accessTypes": [
+      {
+        "itemId": 1,
+        "name": "select",
+        "label": "select",
+        "impliedGrants": []
+      },
+      {
+        "itemId": 2,
+        "name": "update",
+        "label": "update",
+        "impliedGrants": []
+      },
+      {
+        "itemId": 3,
+        "name": "create",
+        "label": "Create",
+        "impliedGrants": []
+      },
+      {
+        "itemId": 4,
+        "name": "drop",
+        "label": "Drop",
+        "impliedGrants": []
+      },
+      {
+        "itemId": 5,
+        "name": "alter",
+        "label": "Alter",
+        "impliedGrants": []
+      },
+      {
+        "itemId": 6,
+        "name": "index",
+        "label": "Index",
+        "impliedGrants": []
+      },
+      {
+        "itemId": 7,
+        "name": "lock",
+        "label": "Lock",
+        "impliedGrants": []
+      },
+      {
+        "itemId": 8,
+        "name": "all",
+        "label": "All",
+        "impliedGrants": [
+          "select",
+          "update",
+          "create",
+          "drop",
+          "alter",
+          "index",
+          "lock"
+        ]
+      }
+    ],
+    "policyConditions": [
+      {
+        "itemId": 1,
+        "name": "resources-accessed-together",
+        "evaluator": "org.apache.ranger.plugin.conditionevaluator.RangerHiveResourcesAccessedTogetherCondition",
+        "evaluatorOptions": {},
+        "label": "Hive Resources Accessed Together?"
+      }
+    ],
+    "contextEnrichers": [],
+    "enums": [],
+    "id": 3,
+    "isEnabled": true
+  },
+  "tagPolicies": {
+    "serviceName": "tagdev",
+    "serviceId": 3,
+    "policyVersion": 1,
+    "policyUpdateTime": "20151212-01:48:43.000-+0000",
+    "policies": [
+      {
+        "service": "tagdev",
+        "name": "tagdev-EXPIRES_ON",
+        "isAuditEnabled": true,
+        "resources": {
+          "tag": {
+            "values": [
+              "EXPIRES_ON"
+            ],
+            "isExcludes": false,
+            "isRecursive": false
+          }
+        },
+        "policyItems": [],
+        "denyPolicyItems": [
+          {
+            "accesses": [
+              {
+                "type": "hive:select",
+                "isAllowed": true
+              },
+              {
+                "type": "hive:update",
+                "isAllowed": true
+              },
+              {
+                "type": "hive:create",
+                "isAllowed": true
+              },
+              {
+                "type": "hive:drop",
+                "isAllowed": true
+              },
+              {
+                "type": "hive:alter",
+                "isAllowed": true
+              },
+              {
+                "type": "hive:index",
+                "isAllowed": true
+              },
+              {
+                "type": "hive:lock",
+                "isAllowed": true
+              },
+              {
+                "type": "hive:all",
+                "isAllowed": true
+              }
+            ],
+            "users": [],
+            "groups": [
+              "public"
+            ],
+            "conditions": [
+              {
+                "type": "accessed-after-expiry",
+                "values": [
+                  "yes"
+                ]
+              }
+            ],
+            "delegateAdmin": true,
+            "isEnabled": true
+          }
+        ],
+        "allowExceptions": [],
+        "denyExceptions": [],
+        "id": 4,
+        "isEnabled": true
+      }
+    ],
+    "serviceDef": {
+      "name": "tag",
+      "implClass": "org.apache.ranger.services.tag.RangerServiceTag",
+      "label": "TAG",
+      "options": {
+        "ui.pages": "tag-based-policies"
+      },
+      "configs": [],
+      "resources": [
+        {
+          "itemId": 1,
+          "name": "tag",
+          "type": "string",
+          "level": 1,
+          "mandatory": true,
+          "lookupSupported": true,
+          "recursiveSupported": false,
+          "excludesSupported": false,
+          "matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+          "matcherOptions": {
+            "wildCard": "false",
+            "ignoreCase": "false"
+          },
+          "validationRegEx": "",
+          "validationMessage": "",
+          "uiHint": "{ \"singleValue\":true }",
+          "label": "TAG"
+        }
+      ],
+      "accessTypes": [
+        {
+          "itemId": 3004,
+          "name": "hive:select",
+          "label": "select",
+          "impliedGrants": []
+        },
+        {
+          "itemId": 3005,
+          "name": "hive:update",
+          "label": "update",
+          "impliedGrants": []
+        },
+        {
+          "itemId": 3006,
+          "name": "hive:create",
+          "label": "Create",
+          "impliedGrants": []
+        },
+        {
+          "itemId": 3007,
+          "name": "hive:drop",
+          "label": "Drop",
+          "impliedGrants": []
+        },
+        {
+          "itemId": 3008,
+          "name": "hive:alter",
+          "label": "Alter",
+          "impliedGrants": []
+        },
+        {
+          "itemId": 3009,
+          "name": "hive:index",
+          "label": "Index",
+          "impliedGrants": []
+        },
+        {
+          "itemId": 3010,
+          "name": "hive:lock",
+          "label": "Lock",
+          "impliedGrants": []
+        },
+        {
+          "itemId": 3011,
+          "name": "hive:all",
+          "label": "All",
+          "impliedGrants": [
+            "hive:select",
+            "hive:update",
+            "hive:create",
+            "hive:drop",
+            "hive:alter",
+            "hive:index",
+            "hive:lock"
+          ]
+        }
+      ],
+      "policyConditions": [
+        {
+          "itemId": 1,
+          "name": "accessed-after-expiry",
+          "evaluator": "org.apache.ranger.plugin.conditionevaluator.RangerScriptTemplateConditionEvaluator",
+          "evaluatorOptions": {
+            "scriptTemplate": "ctx.isAccessedAfter(\u0027expiry_date\u0027);"
+          },
+          "uiHint": "{ \"singleValue\":true }",
+          "label": "Accessed after expiry_date (yes/no)?"
+        }
+      ],
+      "contextEnrichers": [
+        {
+          "itemId": 1,
+          "name": "TagEnricher",
+          "enricher": "org.apache.ranger.plugin.contextenricher.RangerTagEnricher",
+          "enricherOptions": {
+            "tagRetrieverClassName": "org.apache.ranger.plugin.contextenricher.RangerFileBasedTagRetriever",
+            "tagRefresherPollingInterval": "60000",
+            "serviceTagsFileName":"/testdata/test_servicetags_hive.json"
+          }
+        }
+      ],
+      "enums": [],
+      "id": 100,
+      "isEnabled": true
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/src/test/resources/testdata/test_servicetags_hive.json
----------------------------------------------------------------------
diff --git a/ranger-tools/src/test/resources/testdata/test_servicetags_hive.json b/ranger-tools/src/test/resources/testdata/test_servicetags_hive.json
new file mode 100644
index 0000000..73c9264
--- /dev/null
+++ b/ranger-tools/src/test/resources/testdata/test_servicetags_hive.json
@@ -0,0 +1,62 @@
+{
+  "op": "add_or_update",
+  "tagModel": "shared",
+  "serviceName": "cl1_hive",
+  "tagVersion": 500,
+  "tagDefinitions": {
+    "1": {
+      "name": "EXPIRES_ON_1",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 1,
+      "isEnabled": true
+    }
+  },
+  "tags": {
+    "1": {
+      "type": "EXPIRES_ON_1",
+      "attributes": {
+        "expiry_date": "2017/12/31",
+        "activates_on": "2017/01/01"
+      },
+      "id": 1,
+      "isEnabled": true
+    }
+  },
+  "serviceResources": [
+    {
+      "resourceElements": {
+        "database": {
+          "values": [
+            "finance_1"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tax_2010_1"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "id": 1,
+      "isEnabled": true
+    }
+  ],
+  "resourceToTagIds": {
+    "1": [
+      1
+    ]
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/testdata/test_modules.txt
----------------------------------------------------------------------
diff --git a/ranger-tools/testdata/test_modules.txt b/ranger-tools/testdata/test_modules.txt
new file mode 100644
index 0000000..03771fa
--- /dev/null
+++ b/ranger-tools/testdata/test_modules.txt
@@ -0,0 +1,23 @@
+#
+# 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.
+#
+
+RangerTagEnricher.setServiceTags
+RangerPolicyEngine.init
+RangerPolicyEngine.preProcess
+RangerPolicyEngine.isAccessAllowedNoAudit



[4/5] incubator-ranger git commit: RANGER-794: Ranger policy engine performance measurement

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/testdata/test_requests_hive.json
----------------------------------------------------------------------
diff --git a/ranger-tools/testdata/test_requests_hive.json b/ranger-tools/testdata/test_requests_hive.json
new file mode 100644
index 0000000..6b07762
--- /dev/null
+++ b/ranger-tools/testdata/test_requests_hive.json
@@ -0,0 +1,257 @@
+  [
+    {"name":"'select default/tbl-0/col-2;' for hrt_1",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-0","column":"col-2"}},
+      "accessType":"select","user":"hrt_1","userGroups":[],"requestData":"use default"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'select default/tbl-1/col-3;' for hrt_2",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-1","column":"col-3"}},
+      "accessType":"select","user":"hrt_2","userGroups":[],"requestData":"use default"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'select default/tbl-2/col-4;' to hrt_3",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-2","column":"col-4"}},
+      "accessType":"select","user":"hrt_3","userGroups":["users"],"requestData":"use default"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'select default/tbl-3/col-5;' to hrt_4",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-3","column":"col-5"}},
+      "accessType":"select","user":"hrt_4","userGroups":["users", "group1"],"requestData":"use default"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'select default/tbl-4/col-6;' to hrt_5",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-4","column":"col-6"}},
+      "accessType":"select","user":"hrt_5","userGroups":["users", "group2"],"requestData":"use default"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'select default/tbl-5/col-7;' to hrt_6",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-5","column":"col-7"}},
+      "accessType":"select","user":"hrt_6","userGroups":["users", "group3"],"requestData":"use default"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'select default/tbl-6/col-8;' to hrt_7",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-6","column":"col-8"}},
+      "accessType":"select","user":"hrt_7","userGroups":["users"],"requestData":"use finance"
+     },
+     "result":{"isAudited":false,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'select default/tbl-7/col-9 ' to hrt_8",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-7","column":"col-9"}},
+      "accessType":"select","user":"hrt_8","userGroups":["users"],"requestData":"select col1 from default.testtable"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'select default/tbl-8/col-10' to hrt_9",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-8","column":"col-10"}},
+      "accessType":"select","user":"hrt_9","userGroups":["users"],"requestData":"select col1 from default.testtable"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'select default/tbl-9/col-1;' to hrt_10",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-9","column":"col-1"}},
+      "accessType":"select","user":"hrt_10","userGroups":["users"],"requestData":"select col1 from default.testtable"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'lock  default/tbl-0/col-2;' to hrt_1",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-0","column":"col-2"}},
+      "accessType":"lock","user":"hrt_1","userGroups":["users","group1"],"requestData":"select col1 from default.testtable"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'lock default/tbl-1/col-3;' to hrt_2",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-1","column":"col-3"}},
+      "accessType":"lock","user":"hrt_2","userGroups":["users","group2"],"requestData":"select col1 from default.testtable"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'lock default/tbl-2/col-4;' to hrt_3",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-2","column":"col-4"}},
+      "accessType":"lock","user":"hrt_3","userGroups":["users","group3"],"requestData":"select col1 from default.testtable"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'lock default/tbl-3/col-5;' to hrt_4",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-3","column":"col-5"}},
+      "accessType":"lock","user":"hrt_4","userGroups":["users"],"requestData":"select col1 from default.table1"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'lock default/tbl-4/col-6;' to hrt_5",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-4","column":"col-6"}},
+      "accessType":"lock","user":"hrt_5","userGroups":["users"],"requestData":"create table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'lock default/tbl-5/col-7;' to hrt_6",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-5","column":"col-7"}},
+      "accessType":"lock","user":"hrt_6","userGroups":["users","group1"],"requestData":"create table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'lock default/tbl-6/col-8;' to hrt_7",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-6","column":"col-8"}},
+      "accessType":"lock","user":"hrt_7","userGroups":["users"],"requestData":"create table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'lock default/tbl-7/col-9;' to hrt_8",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-7","column":"col-9"}},
+      "accessType":"lock","user":"hrt_8","userGroups":["users","admin"],"requestData":"create table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+     ,
+    {"name":"'lock default/tbl-8/col-10;' to hrt_9",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-8","column":"col-10"}},
+      "accessType":"lock","user":"hrt_9","userGroups":["users"],"requestData":"drop table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'lock default/tbl-9/col-1;' to hrt_20",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-9","column":"col-1"}},
+      "accessType":"lock","user":"hrt_20","userGroups":["users","group1"],"requestData":"drop table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'drop table default/tbl-0;' to hrt_1",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-0"}},
+      "accessType":"drop","user":"hrt_1","userGroups":["users"],"requestData":"drop table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'drop table default/tbl-1;' to hrt_2",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-1"}},
+      "accessType":"drop","user":"hrt_2","userGroups":["users","admin"],"requestData":"drop table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    }
+    ,
+    {"name":"'drop table default/tbl-2;' to hrt_3",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-2"}},
+      "accessType":"drop","user":"hrt_3","userGroups":["users"],"requestData":"create table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'drop table default/tbl-3;' to hrt_4",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-3"}},
+      "accessType":"drop","user":"hrt_4","userGroups":["users","admin"],"requestData":"create table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'drop table default/tbl-4;' to hrt_5",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-4"}},
+      "accessType":"drop","user":"hrt_5","userGroups":["users"],"requestData":"drop table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'drop table default/tbl-5;' to hrt_6",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-5"}},
+      "accessType":"drop","user":"hrt_6","userGroups":["users","admin"],"requestData":"drop table default.testtable1"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'drop tabl default/tbl-6;' to hrt_7",
+     "request":{
+      "resource":{"elements":{"database":"default","table":"tbl-6"}},
+      "accessType":"drop","user":"hrt_7","userGroups":["users"],"requestData":"select col1 from default.table1"
+     },
+     "result":{"isAudited":true,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'drop table to default/tbl-7' for hrt_8",
+     "request":{
+      "resource":{"elements":{"database":"default", "table":"tbl-7"}},
+      "accessType":"drop","user":"hrt_8","userGroups":["users"],"requestData":"show columns in table1 from db1;"
+     },
+     "result":{"isAudited":false,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'_any access to default/tbl-0' for hrt_1",
+     "request":{
+      "resource":{"elements":{"database":"default", "table":"tbl-0"}},
+      "accessType":"","user":"hrt_1","userGroups":["users"],"requestData":"fictional use case when request specified a lower level resource by skipping intermediate resource"
+     },
+     "result":{"isAudited":false,"isAllowed":false,"policyId":-1}
+    }
+    ,
+    {"name":"'_any access to default' for hrt_2",
+     "request":{
+      "resource":{"elements":{"database":"default"}},
+      "accessType":"","user":"hrt_2","userGroups":["users"],"requestData":"use db1"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":3}
+    }
+    ,
+    {"name":"'_any access to default/tbl-1' for hrt_20",
+     "request":{
+      "resource":{"elements":{"database":"default", "table":"tbl-1"}},
+      "accessType":"","user":"hrt_20","userGroups":["users"],"requestData":"describe db1.tbl1"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":3}
+    }
+    ,
+    {"name":"'_any access to default/tbl-2/col-4' for hrt_0",
+     "request":{
+      "resource":{"elements":{"database":"default", "table":"tbl-2", "column":"col-4"}},
+      "accessType":"","user":"hrt_0","userGroups":["users"],"requestData":"fictional case: request for any match today happens only at a higher levels"
+     },
+     "result":{"isAudited":true,"isAllowed":true,"policyId":3}
+    }
+  ]


[3/5] incubator-ranger git commit: RANGER-794: Ranger policy engine performance measurement

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/testdata/test_servicepolicies_hive.json
----------------------------------------------------------------------
diff --git a/ranger-tools/testdata/test_servicepolicies_hive.json b/ranger-tools/testdata/test_servicepolicies_hive.json
new file mode 100644
index 0000000..3561f65
--- /dev/null
+++ b/ranger-tools/testdata/test_servicepolicies_hive.json
@@ -0,0 +1,252899 @@
+{
+  "serviceName": "cl1_hive",
+  "serviceId": 2,
+  "policies": [
+    {
+      "service": "cl1_hive",
+      "name": "cl1_hive-1-20151212014502",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "*"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "*"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "*"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            },
+            {
+              "type": "lock",
+              "isAllowed": true
+            },
+            {
+              "type": "all",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "ambari-qa"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": true,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [],
+      "allowExceptions": [],
+      "denyExceptions": [],
+      "id": 2,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "cl1_hive-2-20151212014503",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "*"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "udf": {
+          "values": [
+            "*"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            },
+            {
+              "type": "lock",
+              "isAllowed": true
+            },
+            {
+              "type": "all",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "ambari-qa"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": true,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [],
+      "allowExceptions": [],
+      "denyExceptions": [],
+      "id": 3,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-1",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?0",
+            "tbl-1-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 5,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-2",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-3"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?1",
+            "tbl-2-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 6,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-3",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-4"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?2",
+            "tbl-3-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3",
+            "hrt_4"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 7,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-4",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-5"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?3",
+            "tbl-4-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_2",
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 8,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-5",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-6"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?4",
+            "tbl-5-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 9,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-6",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-7"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?5",
+            "tbl-6-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 10,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-7",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-8"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?6",
+            "tbl-7-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3",
+            "hrt_4"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 11,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-8",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-9"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?7",
+            "tbl-8-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_2",
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 12,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-9",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-10"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?8",
+            "tbl-9-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 13,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-10",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-1"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?9",
+            "tbl-10-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 14,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-11",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?0",
+            "tbl-11-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3",
+            "hrt_4"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 15,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-12",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-3"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?1",
+            "tbl-12-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_2",
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 16,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-13",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-4"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?2",
+            "tbl-13-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 17,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-14",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-5"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?3",
+            "tbl-14-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 18,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-15",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-6"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?4",
+            "tbl-15-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3",
+            "hrt_4"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 19,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-16",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-7"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?5",
+            "tbl-16-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_2",
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 20,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-17",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-8"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?6",
+            "tbl-17-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 21,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-18",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-9"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?7",
+            "tbl-18-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 22,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-19",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-10"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?8",
+            "tbl-19-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3",
+            "hrt_4"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 23,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-20",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-1"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?9",
+            "tbl-20-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_2",
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 24,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-21",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?0",
+            "tbl-21-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 25,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-22",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-3"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?1",
+            "tbl-22-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 26,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-23",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-4"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?2",
+            "tbl-23-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3",
+            "hrt_4"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 27,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-24",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-5"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?3",
+            "tbl-24-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_2",
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 28,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-25",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-6"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?4",
+            "tbl-25-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 29,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-26",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-7"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?5",
+            "tbl-26-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 30,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-27",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-8"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?6",
+            "tbl-27-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3",
+            "hrt_4"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 31,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-28",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-9"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?7",
+            "tbl-28-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_2",
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 32,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-29",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-10"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?8",
+            "tbl-29-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_3",
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 33,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-30",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-1"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?9",
+            "tbl-30-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_4",
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_20"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "id": 34,
+      "isEnabled": true
+    },
+    {
+      "service": "cl1_hive",
+      "name": "test-policy-31",
+      "isAuditEnabled": false,
+      "resources": {
+        "database": {
+          "values": [
+            "default"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "column": {
+          "values": [
+            "col-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        },
+        "table": {
+          "values": [
+            "tbl?0",
+            "tbl-31-2"
+          ],
+          "isExcludes": false,
+          "isRecursive": false
+        }
+      },
+      "policyItems": [
+        {
+          "accesses": [
+            {
+              "type": "select",
+              "isAllowed": true
+            },
+            {
+              "type": "update",
+              "isAllowed": true
+            },
+            {
+              "type": "create",
+              "isAllowed": true
+            },
+            {
+              "type": "drop",
+              "isAllowed": true
+            },
+            {
+              "type": "alter",
+              "isAllowed": true
+            },
+            {
+              "type": "index",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_1",
+            "hrt_2",
+            "hrt_3",
+            "hrt_4"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "denyPolicyItems": [
+        {
+          "accesses": [
+            {
+              "type": "lock",
+              "isAllowed": true
+            }
+          ],
+          "users": [
+            "hrt_5",
+            "hrt_6",
+            "hrt_7",
+            "hrt_8",
+            "hrt_9"
+          ],
+          "groups": [],
+          "conditions": [],
+          "delegateAdmin": false,
+          "isEnabled": true
+        }
+      ],
+      "allowExceptions": [
+        {
+          "accesses": [
+            {
+              "type": "drop",
+              "isAllowe

<TRUNCATED>


[2/5] incubator-ranger git commit: RANGER-794: Ranger policy engine performance measurement

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbf4f353/ranger-tools/testdata/test_servicetags_hive.json
----------------------------------------------------------------------
diff --git a/ranger-tools/testdata/test_servicetags_hive.json b/ranger-tools/testdata/test_servicetags_hive.json
new file mode 100644
index 0000000..0d5923a
--- /dev/null
+++ b/ranger-tools/testdata/test_servicetags_hive.json
@@ -0,0 +1,23966 @@
+{
+  "op": "add_or_update",
+  "tagModel": "shared",
+  "serviceName": "cl1_hive",
+  "tagVersion": 500,
+  "tagDefinitions": {
+    "1": {
+      "name": "EXPIRES_ON_1",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 1,
+      "isEnabled": true
+    },
+    "2": {
+      "name": "EXPIRES_ON_2",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 2,
+      "isEnabled": true
+    },
+    "3": {
+      "name": "EXPIRES_ON_3",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 3,
+      "isEnabled": true
+    },
+    "4": {
+      "name": "EXPIRES_ON_4",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 4,
+      "isEnabled": true
+    },
+    "5": {
+      "name": "EXPIRES_ON_5",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 5,
+      "isEnabled": true
+    },
+    "6": {
+      "name": "EXPIRES_ON_6",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 6,
+      "isEnabled": true
+    },
+    "7": {
+      "name": "EXPIRES_ON_7",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 7,
+      "isEnabled": true
+    },
+    "8": {
+      "name": "EXPIRES_ON_8",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 8,
+      "isEnabled": true
+    },
+    "9": {
+      "name": "EXPIRES_ON_9",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 9,
+      "isEnabled": true
+    },
+    "10": {
+      "name": "EXPIRES_ON_10",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 10,
+      "isEnabled": true
+    },
+    "11": {
+      "name": "EXPIRES_ON_11",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 11,
+      "isEnabled": true
+    },
+    "12": {
+      "name": "EXPIRES_ON_12",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 12,
+      "isEnabled": true
+    },
+    "13": {
+      "name": "EXPIRES_ON_13",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 13,
+      "isEnabled": true
+    },
+    "14": {
+      "name": "EXPIRES_ON_14",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 14,
+      "isEnabled": true
+    },
+    "15": {
+      "name": "EXPIRES_ON_15",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 15,
+      "isEnabled": true
+    },
+    "16": {
+      "name": "EXPIRES_ON_16",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 16,
+      "isEnabled": true
+    },
+    "17": {
+      "name": "EXPIRES_ON_17",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 17,
+      "isEnabled": true
+    },
+    "18": {
+      "name": "EXPIRES_ON_18",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 18,
+      "isEnabled": true
+    },
+    "19": {
+      "name": "EXPIRES_ON_19",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 19,
+      "isEnabled": true
+    },
+    "20": {
+      "name": "EXPIRES_ON_20",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 20,
+      "isEnabled": true
+    },
+    "21": {
+      "name": "EXPIRES_ON_21",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 21,
+      "isEnabled": true
+    },
+    "22": {
+      "name": "EXPIRES_ON_22",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 22,
+      "isEnabled": true
+    },
+    "23": {
+      "name": "EXPIRES_ON_23",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 23,
+      "isEnabled": true
+    },
+    "24": {
+      "name": "EXPIRES_ON_24",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 24,
+      "isEnabled": true
+    },
+    "25": {
+      "name": "EXPIRES_ON_25",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 25,
+      "isEnabled": true
+    },
+    "26": {
+      "name": "EXPIRES_ON_26",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 26,
+      "isEnabled": true
+    },
+    "27": {
+      "name": "EXPIRES_ON_27",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 27,
+      "isEnabled": true
+    },
+    "28": {
+      "name": "EXPIRES_ON_28",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 28,
+      "isEnabled": true
+    },
+    "29": {
+      "name": "EXPIRES_ON_29",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 29,
+      "isEnabled": true
+    },
+    "30": {
+      "name": "EXPIRES_ON_30",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 30,
+      "isEnabled": true
+    },
+    "31": {
+      "name": "EXPIRES_ON_31",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 31,
+      "isEnabled": true
+    },
+    "32": {
+      "name": "EXPIRES_ON_32",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 32,
+      "isEnabled": true
+    },
+    "33": {
+      "name": "EXPIRES_ON_33",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 33,
+      "isEnabled": true
+    },
+    "34": {
+      "name": "EXPIRES_ON_34",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 34,
+      "isEnabled": true
+    },
+    "35": {
+      "name": "EXPIRES_ON_35",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 35,
+      "isEnabled": true
+    },
+    "36": {
+      "name": "EXPIRES_ON_36",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 36,
+      "isEnabled": true
+    },
+    "37": {
+      "name": "EXPIRES_ON_37",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 37,
+      "isEnabled": true
+    },
+    "38": {
+      "name": "EXPIRES_ON_38",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 38,
+      "isEnabled": true
+    },
+    "39": {
+      "name": "EXPIRES_ON_39",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 39,
+      "isEnabled": true
+    },
+    "40": {
+      "name": "EXPIRES_ON_40",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 40,
+      "isEnabled": true
+    },
+    "41": {
+      "name": "EXPIRES_ON_41",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 41,
+      "isEnabled": true
+    },
+    "42": {
+      "name": "EXPIRES_ON_42",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 42,
+      "isEnabled": true
+    },
+    "43": {
+      "name": "EXPIRES_ON_43",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 43,
+      "isEnabled": true
+    },
+    "44": {
+      "name": "EXPIRES_ON_44",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 44,
+      "isEnabled": true
+    },
+    "45": {
+      "name": "EXPIRES_ON_45",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 45,
+      "isEnabled": true
+    },
+    "46": {
+      "name": "EXPIRES_ON_46",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 46,
+      "isEnabled": true
+    },
+    "47": {
+      "name": "EXPIRES_ON_47",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 47,
+      "isEnabled": true
+    },
+    "48": {
+      "name": "EXPIRES_ON_48",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 48,
+      "isEnabled": true
+    },
+    "49": {
+      "name": "EXPIRES_ON_49",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 49,
+      "isEnabled": true
+    },
+    "50": {
+      "name": "EXPIRES_ON_50",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 50,
+      "isEnabled": true
+    },
+    "51": {
+      "name": "EXPIRES_ON_51",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 51,
+      "isEnabled": true
+    },
+    "52": {
+      "name": "EXPIRES_ON_52",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 52,
+      "isEnabled": true
+    },
+    "53": {
+      "name": "EXPIRES_ON_53",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 53,
+      "isEnabled": true
+    },
+    "54": {
+      "name": "EXPIRES_ON_54",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 54,
+      "isEnabled": true
+    },
+    "55": {
+      "name": "EXPIRES_ON_55",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 55,
+      "isEnabled": true
+    },
+    "56": {
+      "name": "EXPIRES_ON_56",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 56,
+      "isEnabled": true
+    },
+    "57": {
+      "name": "EXPIRES_ON_57",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 57,
+      "isEnabled": true
+    },
+    "58": {
+      "name": "EXPIRES_ON_58",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 58,
+      "isEnabled": true
+    },
+    "59": {
+      "name": "EXPIRES_ON_59",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 59,
+      "isEnabled": true
+    },
+    "60": {
+      "name": "EXPIRES_ON_60",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 60,
+      "isEnabled": true
+    },
+    "61": {
+      "name": "EXPIRES_ON_61",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 61,
+      "isEnabled": true
+    },
+    "62": {
+      "name": "EXPIRES_ON_62",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 62,
+      "isEnabled": true
+    },
+    "63": {
+      "name": "EXPIRES_ON_63",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 63,
+      "isEnabled": true
+    },
+    "64": {
+      "name": "EXPIRES_ON_64",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 64,
+      "isEnabled": true
+    },
+    "65": {
+      "name": "EXPIRES_ON_65",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 65,
+      "isEnabled": true
+    },
+    "66": {
+      "name": "EXPIRES_ON_66",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 66,
+      "isEnabled": true
+    },
+    "67": {
+      "name": "EXPIRES_ON_67",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 67,
+      "isEnabled": true
+    },
+    "68": {
+      "name": "EXPIRES_ON_68",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 68,
+      "isEnabled": true
+    },
+    "69": {
+      "name": "EXPIRES_ON_69",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 69,
+      "isEnabled": true
+    },
+    "70": {
+      "name": "EXPIRES_ON_70",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 70,
+      "isEnabled": true
+    },
+    "71": {
+      "name": "EXPIRES_ON_71",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 71,
+      "isEnabled": true
+    },
+    "72": {
+      "name": "EXPIRES_ON_72",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 72,
+      "isEnabled": true
+    },
+    "73": {
+      "name": "EXPIRES_ON_73",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 73,
+      "isEnabled": true
+    },
+    "74": {
+      "name": "EXPIRES_ON_74",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 74,
+      "isEnabled": true
+    },
+    "75": {
+      "name": "EXPIRES_ON_75",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 75,
+      "isEnabled": true
+    },
+    "76": {
+      "name": "EXPIRES_ON_76",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 76,
+      "isEnabled": true
+    },
+    "77": {
+      "name": "EXPIRES_ON_77",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 77,
+      "isEnabled": true
+    },
+    "78": {
+      "name": "EXPIRES_ON_78",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 78,
+      "isEnabled": true
+    },
+    "79": {
+      "name": "EXPIRES_ON_79",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 79,
+      "isEnabled": true
+    },
+    "80": {
+      "name": "EXPIRES_ON_80",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 80,
+      "isEnabled": true
+    },
+    "81": {
+      "name": "EXPIRES_ON_81",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 81,
+      "isEnabled": true
+    },
+    "82": {
+      "name": "EXPIRES_ON_82",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 82,
+      "isEnabled": true
+    },
+    "83": {
+      "name": "EXPIRES_ON_83",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 83,
+      "isEnabled": true
+    },
+    "84": {
+      "name": "EXPIRES_ON_84",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 84,
+      "isEnabled": true
+    },
+    "85": {
+      "name": "EXPIRES_ON_85",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 85,
+      "isEnabled": true
+    },
+    "86": {
+      "name": "EXPIRES_ON_86",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 86,
+      "isEnabled": true
+    },
+    "87": {
+      "name": "EXPIRES_ON_87",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 87,
+      "isEnabled": true
+    },
+    "88": {
+      "name": "EXPIRES_ON_88",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 88,
+      "isEnabled": true
+    },
+    "89": {
+      "name": "EXPIRES_ON_89",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 89,
+      "isEnabled": true
+    },
+    "90": {
+      "name": "EXPIRES_ON_90",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 90,
+      "isEnabled": true
+    },
+    "91": {
+      "name": "EXPIRES_ON_91",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 91,
+      "isEnabled": true
+    },
+    "92": {
+      "name": "EXPIRES_ON_92",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 92,
+      "isEnabled": true
+    },
+    "93": {
+      "name": "EXPIRES_ON_93",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 93,
+      "isEnabled": true
+    },
+    "94": {
+      "name": "EXPIRES_ON_94",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 94,
+      "isEnabled": true
+    },
+    "95": {
+      "name": "EXPIRES_ON_95",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 95,
+      "isEnabled": true
+    },
+    "96": {
+      "name": "EXPIRES_ON_96",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 96,
+      "isEnabled": true
+    },
+    "97": {
+      "name": "EXPIRES_ON_97",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 97,
+      "isEnabled": true
+    },
+    "98": {
+      "name": "EXPIRES_ON_98",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 98,
+      "isEnabled": true
+    },
+    "99": {
+      "name": "EXPIRES_ON_99",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 99,
+      "isEnabled": true
+    },
+    "100": {
+      "name": "EXPIRES_ON_100",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 100,
+      "isEnabled": true
+    },
+    "101": {
+      "name": "EXPIRES_ON_101",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 101,
+      "isEnabled": true
+    },
+    "102": {
+      "name": "EXPIRES_ON_102",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 102,
+      "isEnabled": true
+    },
+    "103": {
+      "name": "EXPIRES_ON_103",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 103,
+      "isEnabled": true
+    },
+    "104": {
+      "name": "EXPIRES_ON_104",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 104,
+      "isEnabled": true
+    },
+    "105": {
+      "name": "EXPIRES_ON_105",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 105,
+      "isEnabled": true
+    },
+    "106": {
+      "name": "EXPIRES_ON_106",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 106,
+      "isEnabled": true
+    },
+    "107": {
+      "name": "EXPIRES_ON_107",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 107,
+      "isEnabled": true
+    },
+    "108": {
+      "name": "EXPIRES_ON_108",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 108,
+      "isEnabled": true
+    },
+    "109": {
+      "name": "EXPIRES_ON_109",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 109,
+      "isEnabled": true
+    },
+    "110": {
+      "name": "EXPIRES_ON_110",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 110,
+      "isEnabled": true
+    },
+    "111": {
+      "name": "EXPIRES_ON_111",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 111,
+      "isEnabled": true
+    },
+    "112": {
+      "name": "EXPIRES_ON_112",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 112,
+      "isEnabled": true
+    },
+    "113": {
+      "name": "EXPIRES_ON_113",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 113,
+      "isEnabled": true
+    },
+    "114": {
+      "name": "EXPIRES_ON_114",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 114,
+      "isEnabled": true
+    },
+    "115": {
+      "name": "EXPIRES_ON_115",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 115,
+      "isEnabled": true
+    },
+    "116": {
+      "name": "EXPIRES_ON_116",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 116,
+      "isEnabled": true
+    },
+    "117": {
+      "name": "EXPIRES_ON_117",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 117,
+      "isEnabled": true
+    },
+    "118": {
+      "name": "EXPIRES_ON_118",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 118,
+      "isEnabled": true
+    },
+    "119": {
+      "name": "EXPIRES_ON_119",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 119,
+      "isEnabled": true
+    },
+    "120": {
+      "name": "EXPIRES_ON_120",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 120,
+      "isEnabled": true
+    },
+    "121": {
+      "name": "EXPIRES_ON_121",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 121,
+      "isEnabled": true
+    },
+    "122": {
+      "name": "EXPIRES_ON_122",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 122,
+      "isEnabled": true
+    },
+    "123": {
+      "name": "EXPIRES_ON_123",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 123,
+      "isEnabled": true
+    },
+    "124": {
+      "name": "EXPIRES_ON_124",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 124,
+      "isEnabled": true
+    },
+    "125": {
+      "name": "EXPIRES_ON_125",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 125,
+      "isEnabled": true
+    },
+    "126": {
+      "name": "EXPIRES_ON_126",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 126,
+      "isEnabled": true
+    },
+    "127": {
+      "name": "EXPIRES_ON_127",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 127,
+      "isEnabled": true
+    },
+    "128": {
+      "name": "EXPIRES_ON_128",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 128,
+      "isEnabled": true
+    },
+    "129": {
+      "name": "EXPIRES_ON_129",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 129,
+      "isEnabled": true
+    },
+    "130": {
+      "name": "EXPIRES_ON_130",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 130,
+      "isEnabled": true
+    },
+    "131": {
+      "name": "EXPIRES_ON_131",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 131,
+      "isEnabled": true
+    },
+    "132": {
+      "name": "EXPIRES_ON_132",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 132,
+      "isEnabled": true
+    },
+    "133": {
+      "name": "EXPIRES_ON_133",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 133,
+      "isEnabled": true
+    },
+    "134": {
+      "name": "EXPIRES_ON_134",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 134,
+      "isEnabled": true
+    },
+    "135": {
+      "name": "EXPIRES_ON_135",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 135,
+      "isEnabled": true
+    },
+    "136": {
+      "name": "EXPIRES_ON_136",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 136,
+      "isEnabled": true
+    },
+    "137": {
+      "name": "EXPIRES_ON_137",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 137,
+      "isEnabled": true
+    },
+    "138": {
+      "name": "EXPIRES_ON_138",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 138,
+      "isEnabled": true
+    },
+    "139": {
+      "name": "EXPIRES_ON_139",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 139,
+      "isEnabled": true
+    },
+    "140": {
+      "name": "EXPIRES_ON_140",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 140,
+      "isEnabled": true
+    },
+    "141": {
+      "name": "EXPIRES_ON_141",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 141,
+      "isEnabled": true
+    },
+    "142": {
+      "name": "EXPIRES_ON_142",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 142,
+      "isEnabled": true
+    },
+    "143": {
+      "name": "EXPIRES_ON_143",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 143,
+      "isEnabled": true
+    },
+    "144": {
+      "name": "EXPIRES_ON_144",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 144,
+      "isEnabled": true
+    },
+    "145": {
+      "name": "EXPIRES_ON_145",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 145,
+      "isEnabled": true
+    },
+    "146": {
+      "name": "EXPIRES_ON_146",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 146,
+      "isEnabled": true
+    },
+    "147": {
+      "name": "EXPIRES_ON_147",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 147,
+      "isEnabled": true
+    },
+    "148": {
+      "name": "EXPIRES_ON_148",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 148,
+      "isEnabled": true
+    },
+    "149": {
+      "name": "EXPIRES_ON_149",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 149,
+      "isEnabled": true
+    },
+    "150": {
+      "name": "EXPIRES_ON_150",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 150,
+      "isEnabled": true
+    },
+    "151": {
+      "name": "EXPIRES_ON_151",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 151,
+      "isEnabled": true
+    },
+    "152": {
+      "name": "EXPIRES_ON_152",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 152,
+      "isEnabled": true
+    },
+    "153": {
+      "name": "EXPIRES_ON_153",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 153,
+      "isEnabled": true
+    },
+    "154": {
+      "name": "EXPIRES_ON_154",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 154,
+      "isEnabled": true
+    },
+    "155": {
+      "name": "EXPIRES_ON_155",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 155,
+      "isEnabled": true
+    },
+    "156": {
+      "name": "EXPIRES_ON_156",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 156,
+      "isEnabled": true
+    },
+    "157": {
+      "name": "EXPIRES_ON_157",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 157,
+      "isEnabled": true
+    },
+    "158": {
+      "name": "EXPIRES_ON_158",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 158,
+      "isEnabled": true
+    },
+    "159": {
+      "name": "EXPIRES_ON_159",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 159,
+      "isEnabled": true
+    },
+    "160": {
+      "name": "EXPIRES_ON_160",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 160,
+      "isEnabled": true
+    },
+    "161": {
+      "name": "EXPIRES_ON_161",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 161,
+      "isEnabled": true
+    },
+    "162": {
+      "name": "EXPIRES_ON_162",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 162,
+      "isEnabled": true
+    },
+    "163": {
+      "name": "EXPIRES_ON_163",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 163,
+      "isEnabled": true
+    },
+    "164": {
+      "name": "EXPIRES_ON_164",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 164,
+      "isEnabled": true
+    },
+    "165": {
+      "name": "EXPIRES_ON_165",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 165,
+      "isEnabled": true
+    },
+    "166": {
+      "name": "EXPIRES_ON_166",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 166,
+      "isEnabled": true
+    },
+    "167": {
+      "name": "EXPIRES_ON_167",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 167,
+      "isEnabled": true
+    },
+    "168": {
+      "name": "EXPIRES_ON_168",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 168,
+      "isEnabled": true
+    },
+    "169": {
+      "name": "EXPIRES_ON_169",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 169,
+      "isEnabled": true
+    },
+    "170": {
+      "name": "EXPIRES_ON_170",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 170,
+      "isEnabled": true
+    },
+    "171": {
+      "name": "EXPIRES_ON_171",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 171,
+      "isEnabled": true
+    },
+    "172": {
+      "name": "EXPIRES_ON_172",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 172,
+      "isEnabled": true
+    },
+    "173": {
+      "name": "EXPIRES_ON_173",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 173,
+      "isEnabled": true
+    },
+    "174": {
+      "name": "EXPIRES_ON_174",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 174,
+      "isEnabled": true
+    },
+    "175": {
+      "name": "EXPIRES_ON_175",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 175,
+      "isEnabled": true
+    },
+    "176": {
+      "name": "EXPIRES_ON_176",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 176,
+      "isEnabled": true
+    },
+    "177": {
+      "name": "EXPIRES_ON_177",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 177,
+      "isEnabled": true
+    },
+    "178": {
+      "name": "EXPIRES_ON_178",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 178,
+      "isEnabled": true
+    },
+    "179": {
+      "name": "EXPIRES_ON_179",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 179,
+      "isEnabled": true
+    },
+    "180": {
+      "name": "EXPIRES_ON_180",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 180,
+      "isEnabled": true
+    },
+    "181": {
+      "name": "EXPIRES_ON_181",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 181,
+      "isEnabled": true
+    },
+    "182": {
+      "name": "EXPIRES_ON_182",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 182,
+      "isEnabled": true
+    },
+    "183": {
+      "name": "EXPIRES_ON_183",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 183,
+      "isEnabled": true
+    },
+    "184": {
+      "name": "EXPIRES_ON_184",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 184,
+      "isEnabled": true
+    },
+    "185": {
+      "name": "EXPIRES_ON_185",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 185,
+      "isEnabled": true
+    },
+    "186": {
+      "name": "EXPIRES_ON_186",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 186,
+      "isEnabled": true
+    },
+    "187": {
+      "name": "EXPIRES_ON_187",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 187,
+      "isEnabled": true
+    },
+    "188": {
+      "name": "EXPIRES_ON_188",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 188,
+      "isEnabled": true
+    },
+    "189": {
+      "name": "EXPIRES_ON_189",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 189,
+      "isEnabled": true
+    },
+    "190": {
+      "name": "EXPIRES_ON_190",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 190,
+      "isEnabled": true
+    },
+    "191": {
+      "name": "EXPIRES_ON_191",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 191,
+      "isEnabled": true
+    },
+    "192": {
+      "name": "EXPIRES_ON_192",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 192,
+      "isEnabled": true
+    },
+    "193": {
+      "name": "EXPIRES_ON_193",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 193,
+      "isEnabled": true
+    },
+    "194": {
+      "name": "EXPIRES_ON_194",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 194,
+      "isEnabled": true
+    },
+    "195": {
+      "name": "EXPIRES_ON_195",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 195,
+      "isEnabled": true
+    },
+    "196": {
+      "name": "EXPIRES_ON_196",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 196,
+      "isEnabled": true
+    },
+    "197": {
+      "name": "EXPIRES_ON_197",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 197,
+      "isEnabled": true
+    },
+    "198": {
+      "name": "EXPIRES_ON_198",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 198,
+      "isEnabled": true
+    },
+    "199": {
+      "name": "EXPIRES_ON_199",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 199,
+      "isEnabled": true
+    },
+    "200": {
+      "name": "EXPIRES_ON_200",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 200,
+      "isEnabled": true
+    },
+    "201": {
+      "name": "EXPIRES_ON_201",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 201,
+      "isEnabled": true
+    },
+    "202": {
+      "name": "EXPIRES_ON_202",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 202,
+      "isEnabled": true
+    },
+    "203": {
+      "name": "EXPIRES_ON_203",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 203,
+      "isEnabled": true
+    },
+    "204": {
+      "name": "EXPIRES_ON_204",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 204,
+      "isEnabled": true
+    },
+    "205": {
+      "name": "EXPIRES_ON_205",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 205,
+      "isEnabled": true
+    },
+    "206": {
+      "name": "EXPIRES_ON_206",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 206,
+      "isEnabled": true
+    },
+    "207": {
+      "name": "EXPIRES_ON_207",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 207,
+      "isEnabled": true
+    },
+    "208": {
+      "name": "EXPIRES_ON_208",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 208,
+      "isEnabled": true
+    },
+    "209": {
+      "name": "EXPIRES_ON_209",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 209,
+      "isEnabled": true
+    },
+    "210": {
+      "name": "EXPIRES_ON_210",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 210,
+      "isEnabled": true
+    },
+    "211": {
+      "name": "EXPIRES_ON_211",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 211,
+      "isEnabled": true
+    },
+    "212": {
+      "name": "EXPIRES_ON_212",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 212,
+      "isEnabled": true
+    },
+    "213": {
+      "name": "EXPIRES_ON_213",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 213,
+      "isEnabled": true
+    },
+    "214": {
+      "name": "EXPIRES_ON_214",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 214,
+      "isEnabled": true
+    },
+    "215": {
+      "name": "EXPIRES_ON_215",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 215,
+      "isEnabled": true
+    },
+    "216": {
+      "name": "EXPIRES_ON_216",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 216,
+      "isEnabled": true
+    },
+    "217": {
+      "name": "EXPIRES_ON_217",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 217,
+      "isEnabled": true
+    },
+    "218": {
+      "name": "EXPIRES_ON_218",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 218,
+      "isEnabled": true
+    },
+    "219": {
+      "name": "EXPIRES_ON_219",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 219,
+      "isEnabled": true
+    },
+    "220": {
+      "name": "EXPIRES_ON_220",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 220,
+      "isEnabled": true
+    },
+    "221": {
+      "name": "EXPIRES_ON_221",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 221,
+      "isEnabled": true
+    },
+    "222": {
+      "name": "EXPIRES_ON_222",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 222,
+      "isEnabled": true
+    },
+    "223": {
+      "name": "EXPIRES_ON_223",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 223,
+      "isEnabled": true
+    },
+    "224": {
+      "name": "EXPIRES_ON_224",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 224,
+      "isEnabled": true
+    },
+    "225": {
+      "name": "EXPIRES_ON_225",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 225,
+      "isEnabled": true
+    },
+    "226": {
+      "name": "EXPIRES_ON_226",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 226,
+      "isEnabled": true
+    },
+    "227": {
+      "name": "EXPIRES_ON_227",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 227,
+      "isEnabled": true
+    },
+    "228": {
+      "name": "EXPIRES_ON_228",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 228,
+      "isEnabled": true
+    },
+    "229": {
+      "name": "EXPIRES_ON_229",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 229,
+      "isEnabled": true
+    },
+    "230": {
+      "name": "EXPIRES_ON_230",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 230,
+      "isEnabled": true
+    },
+    "231": {
+      "name": "EXPIRES_ON_231",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 231,
+      "isEnabled": true
+    },
+    "232": {
+      "name": "EXPIRES_ON_232",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 232,
+      "isEnabled": true
+    },
+    "233": {
+      "name": "EXPIRES_ON_233",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 233,
+      "isEnabled": true
+    },
+    "234": {
+      "name": "EXPIRES_ON_234",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 234,
+      "isEnabled": true
+    },
+    "235": {
+      "name": "EXPIRES_ON_235",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 235,
+      "isEnabled": true
+    },
+    "236": {
+      "name": "EXPIRES_ON_236",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 236,
+      "isEnabled": true
+    },
+    "237": {
+      "name": "EXPIRES_ON_237",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 237,
+      "isEnabled": true
+    },
+    "238": {
+      "name": "EXPIRES_ON_238",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 238,
+      "isEnabled": true
+    },
+    "239": {
+      "name": "EXPIRES_ON_239",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 239,
+      "isEnabled": true
+    },
+    "240": {
+      "name": "EXPIRES_ON_240",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 240,
+      "isEnabled": true
+    },
+    "241": {
+      "name": "EXPIRES_ON_241",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 241,
+      "isEnabled": true
+    },
+    "242": {
+      "name": "EXPIRES_ON_242",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 242,
+      "isEnabled": true
+    },
+    "243": {
+      "name": "EXPIRES_ON_243",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 243,
+      "isEnabled": true
+    },
+    "244": {
+      "name": "EXPIRES_ON_244",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 244,
+      "isEnabled": true
+    },
+    "245": {
+      "name": "EXPIRES_ON_245",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 245,
+      "isEnabled": true
+    },
+    "246": {
+      "name": "EXPIRES_ON_246",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 246,
+      "isEnabled": true
+    },
+    "247": {
+      "name": "EXPIRES_ON_247",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 247,
+      "isEnabled": true
+    },
+    "248": {
+      "name": "EXPIRES_ON_248",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 248,
+      "isEnabled": true
+    },
+    "249": {
+      "name": "EXPIRES_ON_249",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 249,
+      "isEnabled": true
+    },
+    "250": {
+      "name": "EXPIRES_ON_250",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 250,
+      "isEnabled": true
+    },
+    "251": {
+      "name": "EXPIRES_ON_251",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 251,
+      "isEnabled": true
+    },
+    "252": {
+      "name": "EXPIRES_ON_252",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 252,
+      "isEnabled": true
+    },
+    "253": {
+      "name": "EXPIRES_ON_253",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 253,
+      "isEnabled": true
+    },
+    "254": {
+      "name": "EXPIRES_ON_254",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 254,
+      "isEnabled": true
+    },
+    "255": {
+      "name": "EXPIRES_ON_255",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 255,
+      "isEnabled": true
+    },
+    "256": {
+      "name": "EXPIRES_ON_256",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 256,
+      "isEnabled": true
+    },
+    "257": {
+      "name": "EXPIRES_ON_257",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 257,
+      "isEnabled": true
+    },
+    "258": {
+      "name": "EXPIRES_ON_258",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 258,
+      "isEnabled": true
+    },
+    "259": {
+      "name": "EXPIRES_ON_259",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 259,
+      "isEnabled": true
+    },
+    "260": {
+      "name": "EXPIRES_ON_260",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 260,
+      "isEnabled": true
+    },
+    "261": {
+      "name": "EXPIRES_ON_261",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 261,
+      "isEnabled": true
+    },
+    "262": {
+      "name": "EXPIRES_ON_262",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 262,
+      "isEnabled": true
+    },
+    "263": {
+      "name": "EXPIRES_ON_263",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        },
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        }
+      ],
+      "id": 263,
+      "isEnabled": true
+    },
+    "264": {
+      "name": "EXPIRES_ON_264",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+      ],
+      "id": 264,
+      "isEnabled": true
+    },
+    "265": {
+      "name": "EXPIRES_ON_265",
+      "source": "Internal",
+      "attributeDefs": [
+        {
+          "name": "activates_on",
+          "type": "datetime"
+        },
+        {
+          "name": "expiry_date",
+          "type": "datetime"
+        }
+  

<TRUNCATED>