CollectingTestListener

public class CollectingTestListener
extends Object implements ITestInvocationListener , ILogSaverListener , IDisableable

java.lang.Object
com.android.tradefed.result.CollectingTestListener


برنامج ITestInvocationListener الذي سيجمع جميع نتائج الاختبار.

على الرغم من أن هياكل البيانات المستخدمة في هذا الكائن آمنة لمؤشر الترابط ، يجب استدعاء عمليات الاسترجاعات ITestInvocationListener بالترتيب الصحيح.

ملخص

المنشأت العامة

CollectingTestListener ()

الأساليب العامة

IBuildInfo getBuildInfo ()

هذه الطريقة مهملة. الاعتماد على IBuildInfo من getInvocationContext() .

TestRunResult getCurrentRunResults ()

الحصول على نتائج التشغيل الاختباري الحالي.

int getExpectedTests ()

إرجاع عدد الاختبارات المتوقعة.

IInvocationContext getInvocationContext ()

قم بإرجاع سياق الاستدعاء الذي تم الإبلاغ عنه عبر invocationStarted(com.android.tradefed.invoker.IInvocationContext)

getMergedTestRunResults ()

قم بإرجاع مجموعة النتائج المدمجة لجميع عمليات التشغيل عبر المحاولات المختلفة.

IInvocationContext getModuleContextForRunResult (String testRunName)

تُرجع IInvocationContext للوحدة النمطية المرتبطة بالنتائج.

MultiMap <String, LogFile > getModuleLogFiles ()

تُرجع نسخة من الخريطة تحتوي على كل الملفات المسجلة المرتبطة بالوحدة النمطية

MultiMap <String, LogFile > getNonAssociatedLogFiles ()

تُرجع نسخة من الخريطة التي تحتوي على كل الملفات المسجلة غير المرتبطة بتشغيل اختباري أو وحدة نمطية.

int getNumAllFailedTestRuns ()

تُرجع العدد الإجمالي لعمليات التشغيل الاختبارية في حالة الفشل

int getNumAllFailedTests ()

إرجاع العدد الإجمالي للاختبارات في حالة فشل (فشلت فقط ، فشل الافتراضات لا تحسب في ذلك).

int getNumTestsInState (TestResult.TestStatus status)

تُرجع عدد الاختبارات في حالة معينة لهذا التشغيل.

int getNumTotalTests ()

تُرجع العدد الإجمالي للاختبارات الكاملة لجميع عمليات التشغيل.

IBuildInfo getPrimaryBuildInfo ()

قم بإرجاع معلومات البنية الأساسية التي تم الإبلاغ عنها عبر invocationStarted(com.android.tradefed.invoker.IInvocationContext) .

getRunResults ()

هذه الطريقة مهملة. استخدم getMergedTestRunResults()

TestRunResult getTestRunAtAttempt (String testRunName, int attempt)

أعد TestRunResult لمحاولة واحدة.

int getTestRunAttemptCount (String testRunName)

تُرجع عدد المحاولات لاسم تشغيل اختباري محدد.

getTestRunAttempts (String testRunName)

يحصل على كل المحاولات لـ TestRunResult لتشغيل اختباري معين.

getTestRunForAttempts (int attempt)

يحصل على جميع النتائج لمحاولة معينة.

getTestRunNames ()

أعد جميع الأسماء لجميع عمليات الاختبار.

boolean hasFailedTests ()

تُرجع إذا كان الاستدعاء به أي اختبارات فاشلة أو فاشلة.

boolean hasTestRunResultsForName (String testRunName)

تُرجع ما إذا كان لاسم التشغيل الاختباري المحدد أي نتائج أم لا.

void invocationEnded (long elapsedTime)

التقارير التي تفيد بانتهاء الاستدعاء ، سواء بنجاح أو بسبب حالة خطأ ما.

void invocationFailed (Throwable cause)

يُبلغ عن استدعاء غير مكتمل بسبب حالة خطأ ما.

void invocationStarted ( IInvocationContext context)

يُبلغ عن بدء استدعاء الاختبار.

boolean isDisabled ()

إرجاع True إذا تم تعطيل الكائن بالكامل (تخطي كل من الإعداد والتفكيك).

void logAssociation (String dataName, LogFile logFile)

في بعض الحالات ، يجب أن يكون السجل مرتبطًا بقوة بحالات الاختبار ، ولكن الفرصة للقيام بذلك في testLogSaved(String, com.android.tradefed.result.LogDataType, com.android.tradefed.result.InputStreamSource, com.android.tradefed.result.LogFile) غير ممكن.

void setBuildInfo ( IBuildInfo buildInfo)

هذه الطريقة مهملة. ليست ضرورية للاختبار بعد الآن.

void setDisable (boolean isDisabled)

يحدد ما إذا كان يجب تعطيل الكائن.

void setMergeStrategy ( MergeStrategy strategy)

يعيّن MergeStrategy لاستخدامها عند دمج النتائج.

void testAssumptionFailure ( TestDescription test, String trace)

يُستدعى عندما يشير اختبار ذري إلى أنه يفترض وجود شرط خاطئ

void testAssumptionFailure ( TestDescription test, FailureDescription failure)

يُستدعى عندما يشير اختبار ذري إلى أنه يفترض وجود شرط خاطئ

void testEnded ( TestDescription test, long endTime, testMetrics) testEnded ( TestDescription test, long endTime, testMetrics)

بديل لـ ERROR(/#testEnded(com.android.tradefed.result.TestDescription,Map)) حيث يمكننا تحديد وقت الانتهاء مباشرة.

void testEnded ( TestDescription test, testMetrics) testEnded ( TestDescription test, testMetrics)

يُبلغ عن نهاية تنفيذ حالة اختبار فردية.

void testFailed ( TestDescription test, FailureDescription failure)

يبلغ عن فشل حالة الاختبار الفردية.

void testFailed ( TestDescription test, String trace)

يبلغ عن فشل حالة الاختبار الفردية.

void testIgnored ( TestDescription test)

يتم استدعاؤه في حالة عدم إجراء اختبار ، بشكل عام بسبب إضافة تعليق توضيحي على طريقة الاختبار باستخدام org.junit. تجاهل.

void testModuleEnded ()

تقارير نهاية تشغيل الوحدة النمطية.

void testModuleStarted ( IInvocationContext moduleContext)

تقارير بداية تشغيل وحدة نمطية.

void testRunEnded (long elapsedTime, runMetrics) testRunEnded (long elapsedTime, runMetrics)

يبلغ عن نهاية التشغيل التجريبي.

void testRunFailed ( FailureDescription failure)

فشل تشغيل اختبار التقارير في الإكمال بسبب فشل تم وصفه بواسطة FailureDescription .

void testRunFailed (String errorMessage)

تقارير فشل التشغيل الاختباري بسبب خطأ فادح.

void testRunStarted (String name, int numTests, int attemptNumber)

يعلن عن بدء تشغيل اختباري.

void testRunStarted (String name, int numTests)

يعلن عن بدء تشغيل اختباري.

void testRunStarted (String name, int numTests, int attemptNumber, long startTime)

يعلن عن بدء تشغيل اختباري.

void testRunStopped (long elapsedTime)

تم إيقاف تشغيل اختبار التقارير قبل الإكمال بناءً على طلب المستخدم.

void testStarted ( TestDescription test, long startTime)

بديل عن testStarted(com.android.tradefed.result.TestDescription) حيث نحدد أيضًا وقت بدء الاختبار ، جنبًا إلى جنب مع ERROR(/#testEnded(com.android.tradefed.result.TestDescription,long,Map)) لقياس دقيق .

void testStarted ( TestDescription test)

يُبلغ عن بداية حالة اختبار فردية.

الطرق المحمية

final void clearModuleLogFiles ()

يسمح بتنظيف ملف الوحدة حتى نتجنب حملها لفترة طويلة.

final void clearResultsForName (String testRunName)

يسمح لمسح النتائج لاسم تشغيل معين.

void setIsAggregrateMetrics (boolean aggregate)

بدّل خيار "المقاييس الإجمالية"

المنشأت العامة

CollectingTestListener

public CollectingTestListener ()

الأساليب العامة

getBuildInfo

public IBuildInfo getBuildInfo ()

هذه الطريقة مهملة.
الاعتماد على IBuildInfo من getInvocationContext() .

إرجاع معلومات البناء.

عائدات
IBuildInfo

getCurrentRunResults

public TestRunResult getCurrentRunResults ()

الحصول على نتائج التشغيل الاختباري الحالي.

لاحظ أن النتائج قد لا تكون كاملة. يوصى باختبار قيمة TestRunResult.isRunComplete() و / أو (link TestRunResult # isRunFailure ()} بالشكل المناسب قبل معالجة النتائج.

عائدات
TestRunResult يمثل TestRunResult البيانات التي تم جمعها أثناء التشغيل الاختباري الأخير

getExpectedTests

public int getExpectedTests ()

إرجاع عدد الاختبارات المتوقعة. قد تختلف عن getNumTotalTests() إذا لم يتم تشغيل بعض الاختبارات.

عائدات
int

getInvocationContext

public IInvocationContext getInvocationContext ()

قم بإرجاع سياق الاستدعاء الذي تم الإبلاغ عنه عبر invocationStarted(com.android.tradefed.invoker.IInvocationContext)

عائدات
IInvocationContext

getMergedTestRunResults

public  getMergedTestRunResults ()

قم بإرجاع مجموعة النتائج المدمجة لجميع عمليات التشغيل عبر المحاولات المختلفة.

في حالة وجود عدة نتائج ، يتم دمج كل تشغيل اختباري ، مع الكتابة فوق نتائج الاختبار الأخيرة للتشغيلات السابقة. يتم ترتيب عمليات التشغيل التجريبية حسب رقم المحاولة.

سيتم دمج المقاييس الخاصة بالمحاولة نفسها بناءً على التفضيل الذي تم تعيينه بواسطة aggregate-metrics . ستكون المقاييس النهائية هي مقاييس المحاولة الأخيرة.

عائدات

getModuleContextForRunResult

public IInvocationContext getModuleContextForRunResult (String testRunName)

تُرجع IInvocationContext للوحدة النمطية المرتبطة بالنتائج.

حدود
testRunName String : الاسم الذي قدمه { testRunStarted(String, int) .

عائدات
IInvocationContext IInvocationContext للوحدة النمطية لاسم تشغيل اختباري محدد null إذا لم تكن هناك نتائج لهذا الاسم.

getModuleLogFiles

public MultiMap<String, LogFile> getModuleLogFiles ()

تُرجع نسخة من الخريطة تحتوي على كل الملفات المسجلة المرتبطة بالوحدة النمطية

عائدات
MultiMap <String, LogFile >

getNonAssociatedLogFiles

public MultiMap<String, LogFile> getNonAssociatedLogFiles ()

تُرجع نسخة من الخريطة التي تحتوي على كل الملفات المسجلة غير المرتبطة بتشغيل اختباري أو وحدة نمطية.

عائدات
MultiMap <String, LogFile >

getNumAllFailedTestRuns

public int getNumAllFailedTestRuns ()

تُرجع العدد الإجمالي لعمليات التشغيل الاختبارية في حالة الفشل

عائدات
int

getNumAllFailedTests

public int getNumAllFailedTests ()

إرجاع العدد الإجمالي للاختبارات في حالة فشل (فشلت فقط ، فشل الافتراضات لا تحسب في ذلك).

عائدات
int

getNumTestsInState

public int getNumTestsInState (TestResult.TestStatus status)

تُرجع عدد الاختبارات في حالة معينة لهذا التشغيل.

حدود
status TestResult.TestStatus

عائدات
int

getNumTotalTests

public int getNumTotalTests ()

تُرجع العدد الإجمالي للاختبارات الكاملة لجميع عمليات التشغيل.

عائدات
int

getPrimaryBuildInfo

public IBuildInfo getPrimaryBuildInfo ()

قم بإرجاع معلومات البنية الأساسية التي تم الإبلاغ عنها عبر invocationStarted(com.android.tradefed.invoker.IInvocationContext) . البناء الأساسي هو البناء الذي يعيده موفر البناء الأول للتكوين الجاري تشغيله. إرجاع القيمة فارغة إذا لم يكن هناك سياق (لا يوجد بناء لاختبار الحالة).

عائدات
IBuildInfo

getRunResults

public  getRunResults ()

هذه الطريقة مهملة.
استخدم getMergedTestRunResults()

تُرجع نتائج كافة عمليات التشغيل الاختبارية.

عائدات

getTestRunAtAttempt

public TestRunResult getTestRunAtAttempt (String testRunName, 
                int attempt)

أعد TestRunResult لمحاولة واحدة.

حدود
testRunName String : الاسم الذي قدمه { testRunStarted(String, int) .

attempt int : معرف المحاولة.

عائدات
TestRunResult TestRunResult للاسم المحدد ومعرف المحاولة أو null إذا لم يكن موجودًا.

getTestRunAttemptCount

public int getTestRunAttemptCount (String testRunName)

تُرجع عدد المحاولات لاسم تشغيل اختباري محدد.

حدود
testRunName String : الاسم الذي قدمه { testRunStarted(String, int) .

عائدات
int

getTestRunAttempts

public  getTestRunAttempts (String testRunName)

يحصل على كل المحاولات لـ TestRunResult لتشغيل اختباري معين.

حدود
testRunName String : الاسم الذي قدمه { testRunStarted(String, int) .

عائدات
كل TestRunResult لتشغيل اختباري معين ، مرتبة حسب المحاولات.

getTestRunForAttempts

public  getTestRunForAttempts (int attempt)

يحصل على جميع النتائج لمحاولة معينة.

حدود
attempt int : المحاولة التي نريد نتائج لها.

عائدات
كل TestRunResult لمحاولة معينة.

getTestRunNames

public  getTestRunNames ()

أعد جميع الأسماء لجميع عمليات الاختبار.

قد يتم تشغيل هذه الاختبارات التجريبية عدة مرات مع محاولات مختلفة.

عائدات

hasFailedTests

public boolean hasFailedTests ()

تُرجع إذا كان الاستدعاء به أي اختبارات فاشلة أو فاشلة.

عائدات
boolean

hasTestRunResultsForName

public boolean hasTestRunResultsForName (String testRunName)

تُرجع ما إذا كان لاسم التشغيل الاختباري المحدد أي نتائج أم لا.

حدود
testRunName String : الاسم الذي قدمه { testRunStarted(String, int) .

عائدات
boolean

انتهى الدعاء

public void invocationEnded (long elapsedTime)

التقارير التي تفيد بانتهاء الاستدعاء ، سواء بنجاح أو بسبب حالة خطأ ما.

سيتم استدعاؤه تلقائيًا بواسطة إطار عمل TradeFederation.

حدود
elapsedTime long : الوقت المنقضي للاستدعاء بالمللي ثانية

الدعاء فشل

public void invocationFailed (Throwable cause)

يُبلغ عن استدعاء غير مكتمل بسبب حالة خطأ ما.

سيتم استدعاؤه تلقائيًا بواسطة إطار عمل TradeFederation.

حدود
cause Throwable : سبب ERROR(/Throwable) للفشل

بدأ الاحتجاج

public void invocationStarted (IInvocationContext context)

يُبلغ عن بدء استدعاء الاختبار.

سيتم استدعاؤه تلقائيًا بواسطة إطار عمل TradeFederation. يحتاج المراسلون إلى تجاوز هذه الطريقة لدعم تقارير الأجهزة المتعددة.

حدود
context IInvocationContext : معلومات حول الاستدعاء

معطل

public boolean isDisabled ()

إرجاع True إذا تم تعطيل الكائن بالكامل (تخطي كل من الإعداد والتفكيك). خطأ خلاف ذلك.

عائدات
boolean

جمعية السجل

public void logAssociation (String dataName, 
                LogFile logFile)

في بعض الحالات ، يجب أن يكون السجل مرتبطًا بقوة بحالات الاختبار ، ولكن الفرصة للقيام بذلك في testLogSaved(String, com.android.tradefed.result.LogDataType, com.android.tradefed.result.InputStreamSource, com.android.tradefed.result.LogFile) غير ممكن. وبالتالي ، فإن رد الاتصال هذا يسمح بتوفير ارتباط قوي بشكل صريح.

حدود
dataName String : اسم البيانات

logFile LogFile : LogFile الذي تم تسجيله من قبل ويجب أن يكون مرتبطًا بحالة الاختبار.

setBuildInfo

public void setBuildInfo (IBuildInfo buildInfo)

هذه الطريقة مهملة.
ليس ضروريًا للاختبار بعد الآن.

اضبط معلومات البناء. يجب أن تستخدم فقط للاختبار.

حدود
buildInfo IBuildInfo

تعيين تعطيل

public void setDisable (boolean isDisabled)

يحدد ما إذا كان يجب تعطيل الكائن. معطل يعني أنه يجب تخطي كل من خطوات الإعداد والتفكيك. يمكن استخدامه لتعطيل كائن افتراضيًا في المُنشئ الافتراضي.

حدود
isDisabled boolean : الحالة التي يجب وضع الكائن فيها.

setMergeStrategy

public void setMergeStrategy (MergeStrategy strategy)

يعيّن MergeStrategy لاستخدامها عند دمج النتائج.

حدود
strategy MergeStrategy

testAssumptionFailure

public void testAssumptionFailure (TestDescription test, 
                String trace)

يُستدعى عندما يشير اختبار ذري إلى أنه يفترض وجود شرط خاطئ

حدود
test TestDescription : يحدد الاختبار

trace String : كومة تتبع الفشل

testAssumptionFailure

public void testAssumptionFailure (TestDescription test, 
                FailureDescription failure)

يُستدعى عندما يشير اختبار ذري إلى أنه يفترض وجود شرط خاطئ

حدود
test TestDescription : يحدد الاختبار

failure FailureDescription : FailureDescription يصف الفشل وسياقه.

انتهى الاختبار

public void testEnded (TestDescription test, 
                long endTime, 
                 testMetrics)

بديل لـ ERROR(/#testEnded(com.android.tradefed.result.TestDescription,Map)) حيث يمكننا تحديد وقت الانتهاء مباشرة. ادمج مع testStarted(com.android.tradefed.result.TestDescription, long) لقياس دقيق.

حدود
test TestDescription : يحدد الاختبار

endTime long : الوقت الذي انتهى فيه الاختبار ، تم قياسه عبر ERROR(/System#currentTimeMillis())

testMetrics : ERROR(/Map) المقاييس المنبعثة

انتهى الاختبار

public void testEnded (TestDescription test, 
                 testMetrics)

يُبلغ عن نهاية تنفيذ حالة اختبار فردية.

إذا لم يتم استدعاء testFailed(TestDescription, FailureDescription) ، فإن هذا الاختبار نجح. يُرجع أيضًا أي مقاييس مفتاح / قيمة قد تكون انبعثت أثناء تنفيذ حالة الاختبار.

حدود
test TestDescription : يحدد الاختبار

testMetrics : ERROR(/Map) المقاييس المنبعثة

فشل الاختبار

public void testFailed (TestDescription test, 
                FailureDescription failure)

يبلغ عن فشل حالة الاختبار الفردية.

سيتم استدعاؤه بين testStarted و testEnded.

حدود
test TestDescription : يحدد الاختبار

failure FailureDescription : FailureDescription يصف الفشل وسياقه.

فشل الاختبار

public void testFailed (TestDescription test, 
                String trace)

يبلغ عن فشل حالة الاختبار الفردية.

سيتم استدعاؤه بين testStarted و testEnded.

حدود
test TestDescription : يحدد الاختبار

trace String : كومة تتبع الفشل

test تم تجاهله

public void testIgnored (TestDescription test)

يتم استدعاؤه في حالة عدم إجراء اختبار ، بشكل عام بسبب إضافة تعليق توضيحي على طريقة الاختبار باستخدام org.junit. تجاهل.

حدود
test TestDescription : يحدد الاختبار

انتهى الاختبار

public void testModuleEnded ()

تقارير نهاية تشغيل الوحدة النمطية.

testModule بدأ

public void testModuleStarted (IInvocationContext moduleContext)

تقارير بداية تشغيل وحدة نمطية. ترتبط رد الاتصال هذا بـ testModuleEnded() وهي اختيارية في التسلسل. يتم استخدامه فقط أثناء الجري الذي يستخدم الوحدات النمطية: المتسابقون القائمون على الجناح.

حدود
moduleContext IInvocationContext : IInvocationContext للوحدة النمطية.

انتهى الاختبار

public void testRunEnded (long elapsedTime, 
                 runMetrics)

يبلغ عن نهاية التشغيل التجريبي. FIXME: لا يمكن أن يكون لدينا واجهتان لخريطة <> بنوع مختلف ، لذلك علينا استخدام HashMap هنا.

حدود
elapsedTime long : أبلغ الجهاز عن الوقت المنقضي بالمللي ثانية

runMetrics : تم الإبلاغ عن أزواج المفتاح والقيمة في نهاية تشغيل اختباري باستخدام Metric .

testRunFailed

public void testRunFailed (FailureDescription failure)

فشل تشغيل اختبار التقارير في الإكمال بسبب فشل تم وصفه بواسطة FailureDescription .

حدود
failure FailureDescription : FailureDescription يصف الفشل وسياقه.

testRunFailed

public void testRunFailed (String errorMessage)

تقارير فشل التشغيل الاختباري بسبب خطأ فادح.

حدود
errorMessage String : ERROR(/String) تصف سبب فشل التشغيل.

testRunStarted

public void testRunStarted (String name, 
                int numTests, 
                int attemptNumber)

يعلن عن بدء تشغيل اختباري.

حدود
name String : اسم التشغيل التجريبي

numTests int : إجمالي عدد الاختبارات في التشغيل التجريبي

attemptNumber int : رقم الطلب ، يحدد المحاولات المختلفة لنفس runName التي يتم تشغيلها عدة مرات. tryNumber هو 0 مفهرس ويجب أن يزداد في كل مرة يحدث فيها تشغيل جديد. على سبيل المثال ، تمت إعادة محاولة الاختبار المحبب 3 مرات ، ويجب أن يكون له 4 عمليات تشغيل إجمالية تحت نفس اسم التشغيل ويكون رقم المحاولة من 0 إلى 3.

testRunStarted

public void testRunStarted (String name, 
                int numTests)

يعلن عن بدء تشغيل اختباري.

حدود
name String : اسم التشغيل التجريبي

numTests int : إجمالي عدد الاختبارات في التشغيل التجريبي

testRunStarted

public void testRunStarted (String name, 
                int numTests, 
                int attemptNumber, 
                long startTime)

يعلن عن بدء تشغيل اختباري.

حدود
name String : اسم التشغيل التجريبي

numTests int : إجمالي عدد الاختبارات في التشغيل التجريبي

attemptNumber int : رقم الطلب ، يحدد المحاولات المختلفة لنفس runName التي يتم تشغيلها عدة مرات. tryNumber هو 0 مفهرس ويجب أن يزداد في كل مرة يحدث فيها تشغيل جديد. على سبيل المثال ، تمت إعادة محاولة الاختبار المحبب 3 مرات ، ويجب أن يكون له 4 عمليات تشغيل إجمالية تحت نفس اسم التشغيل ويكون رقم المحاولة من 0 إلى 3.

startTime long : الوقت الذي بدأ فيه التشغيل ، تم قياسه عبر ERROR(/System#currentTimeMillis())

testRunStopped

public void testRunStopped (long elapsedTime)

تم إيقاف تشغيل اختبار التقارير قبل الإكمال بناءً على طلب المستخدم.

TODO: غير مستخدم حاليًا ، جرب الإزالة

حدود
elapsedTime long : أبلغ الجهاز عن الوقت المنقضي بالمللي ثانية

اختبار

public void testStarted (TestDescription test, 
                long startTime)

بديل عن testStarted(com.android.tradefed.result.TestDescription) حيث نحدد أيضًا وقت بدء الاختبار ، جنبًا إلى جنب مع ERROR(/#testEnded(com.android.tradefed.result.TestDescription,long,Map)) لقياس دقيق .

حدود
test TestDescription : يحدد الاختبار

startTime long : الوقت الذي بدأ فيه الاختبار ، تم قياسه عبر ERROR(/System#currentTimeMillis())

اختبار

public void testStarted (TestDescription test)

يُبلغ عن بداية حالة اختبار فردية. الواجهة الأقدم ، يجب أن تستخدم testStarted(com.android.tradefed.result.TestDescription) كلما أمكن ذلك.

حدود
test TestDescription : يحدد الاختبار

الطرق المحمية

clearModuleLogFiles

protected final void clearModuleLogFiles ()

يسمح بتنظيف ملف الوحدة حتى نتجنب حملها لفترة طويلة.

clearResultsForName

protected final void clearResultsForName (String testRunName)

يسمح لمسح النتائج لاسم تشغيل معين. يجب استخدامه فقط في بعض الحالات مثل مُجمّع النتائج.

حدود
testRunName String

setIsAggregrateMetrics

protected void setIsAggregrateMetrics (boolean aggregate)

بدّل خيار "المقاييس الإجمالية"

حدود
aggregate boolean