Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

CollectingTestListener

public class CollectingTestListener
extends Object implements ITestInvocationListener , ILogSaverListener

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


Một ITestInvocationListener sẽ thu thập tất cả các kết quả kiểm tra.

Mặc dù các cấu trúc dữ liệu được sử dụng trong đối tượng này là an toàn theo luồng, các lệnh gọi lại ITestInvocationListener phải được gọi theo đúng thứ tự.

Bản tóm tắt

Các nhà xây dựng công cộng

CollectingTestListener ()

Phương pháp công khai

IBuildInfo getBuildInfo ()

Phương pháp này không được dùng nữa. dựa vào IBuildInfo từ getInvocationContext() .

TestRunResult getCurrentRunResults ()

Nhận kết quả cho lần chạy thử nghiệm hiện tại.

int getExpectedTests ()

Trả về số lần kiểm tra dự kiến.

IInvocationContext getInvocationContext ()

Trả lại ngữ cảnh lời gọi đã được báo cáo qua invocationStarted(com.android.tradefed.invoker.IInvocationContext)

getMergedTestRunResults ()

Trả lại tập hợp kết quả đã hợp nhất cho tất cả các lần chạy qua các lần thử khác nhau.

IInvocationContext getModuleContextForRunResult (String testRunName)

Trả về IInvocationContext của mô-đun được liên kết với kết quả.

MultiMap <String, LogFile > getModuleLogFiles ()

Trả về bản sao của bản đồ chứa tất cả tệp đã ghi được liên kết với mô-đun

MultiMap <String, LogFile > getNonAssociatedLogFiles ()

Trả về bản sao của bản đồ chứa tất cả tệp đã ghi không liên quan đến quá trình chạy thử nghiệm hoặc mô-đun.

int getNumAllFailedTestRuns ()

Trả về tổng số lần chạy thử nghiệm trong trạng thái không thành công

int getNumAllFailedTests ()

Trả về tổng số lần kiểm tra ở trạng thái không thành công (chỉ thất bại, các lỗi giả định không được tính vào nó).

int getNumTestsInState (TestResult.TestStatus status)

Trả về số lần kiểm tra ở trạng thái đã cho cho lần chạy này.

int getNumTotalTests ()

Trả về tổng số lần kiểm tra hoàn chỉnh cho tất cả các lần chạy.

IBuildInfo getPrimaryBuildInfo ()

Trả lại thông tin bản dựng chính đã được báo cáo qua invocationStarted(com.android.tradefed.invoker.IInvocationContext) .

getRunResults ()

Phương pháp này không được dùng nữa. Sử dụng getMergedTestRunResults()

TestRunResult getTestRunAtAttempt (String testRunName, int attempt)

Trả lại TestRunResult cho một lần thử.

int getTestRunAttemptCount (String testRunName)

Trả về số lần thử cho một tên chạy thử nhất định.

getTestRunAttempts (String testRunName)

Nhận tất cả các lần thử TestRunResult của một lần chạy thử nghiệm nhất định.

getTestRunForAttempts (int attempt)

Nhận tất cả các kết quả cho một lần thử nhất định.

getTestRunNames ()

Trả lại tất cả các tên cho tất cả các lần chạy thử nghiệm.

boolean hasFailedTests ()

Trả về nếu lời gọi có bất kỳ thử nghiệm không thành công hoặc giả định không thành công.

boolean hasTestRunResultsForName (String testRunName)

Trả về liệu một tên chạy thử nghiệm đã cho có bất kỳ kết quả nào hay không.

void invocationEnded (long elapsedTime)

Báo cáo rằng lệnh gọi đã kết thúc, cho dù thành công hay do một số điều kiện lỗi.

void invocationFailed (Throwable cause)

Báo cáo lời gọi không đầy đủ do một số điều kiện lỗi.

void invocationStarted ( IInvocationContext context)

Báo cáo thời điểm bắt đầu gọi kiểm tra.

void logAssociation (String dataName, LogFile logFile)

Trong một số trường hợp, nhật ký phải được liên kết chặt chẽ với các trường hợp thử nghiệm, nhưng cơ hội để làm như vậy trên testLogSaved(String, com.android.tradefed.result.LogDataType, com.android.tradefed.result.InputStreamSource, com.android.tradefed.result.LogFile) không thể gọi lại.

void setBuildInfo ( IBuildInfo buildInfo)

Phương pháp này không được dùng nữa. Không cần thiết để thử nghiệm nữa.

void setMergeStrategy ( MergeStrategy strategy)

Đặt MergeStrategy để sử dụng khi hợp nhất các kết quả.

void testAssumptionFailure ( TestDescription test, String trace)

Được gọi khi một bài kiểm tra nguyên tử gắn cờ rằng nó giả định một điều kiện sai

void testAssumptionFailure ( TestDescription test, FailureDescription failure)

Được gọi khi một bài kiểm tra nguyên tử gắn cờ rằng nó giả định một điều kiện sai

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

Thay thế cho ERROR(/#testEnded(com.android.tradefed.result.TestDescription,Map)) trong đó chúng tôi có thể chỉ định thời gian kết thúc trực tiếp.

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

Báo cáo kết thúc thực thi của một trường hợp thử nghiệm riêng lẻ.

void testFailed ( TestDescription test, FailureDescription failure)

Báo cáo lỗi của một trường hợp thử nghiệm riêng lẻ.

void testFailed ( TestDescription test, String trace)

Báo cáo lỗi của một trường hợp thử nghiệm riêng lẻ.

void testIgnored ( TestDescription test)

Được gọi khi một bài kiểm tra sẽ không được chạy, thường là vì một phương pháp kiểm tra được chú thích bằng org.junit.Ignore.

void testModuleEnded ()

Báo cáo kết thúc quá trình chạy mô-đun.

void testModuleStarted ( IInvocationContext moduleContext)

Báo cáo sự bắt đầu của một mô-đun đang chạy.

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

Báo cáo kết thúc quá trình chạy thử nghiệm.

void testRunFailed ( FailureDescription failure)

Không thể hoàn tất quá trình chạy kiểm tra báo cáo do lỗi được mô tả bởi FailureDescription .

void testRunFailed (String errorMessage)

Không thể hoàn tất quá trình chạy kiểm tra báo cáo do lỗi nghiêm trọng.

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

Báo cáo khi bắt đầu chạy thử nghiệm.

void testRunStarted (String name, int numTests)

Báo cáo khi bắt đầu chạy thử nghiệm.

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

Báo cáo khi bắt đầu chạy thử nghiệm.

void testRunStopped (long elapsedTime)

Quá trình chạy kiểm tra báo cáo đã dừng trước khi hoàn thành do yêu cầu của người dùng.

void testStarted ( TestDescription test, long startTime)

Thay thế cho testStarted(com.android.tradefed.result.TestDescription) trong đó chúng tôi cũng chỉ định thời điểm bắt đầu kiểm tra, kết hợp với ERROR(/#testEnded(com.android.tradefed.result.TestDescription,long,Map)) để đo chính xác .

void testStarted ( TestDescription test)

Báo cáo sự bắt đầu của một trường hợp thử nghiệm riêng lẻ.

Các phương pháp được bảo vệ

final void clearModuleLogFiles ()

Cho phép làm sạch tệp mô-đun để chúng tôi tránh mang chúng quá lâu.

final void clearResultsForName (String testRunName)

Cho phép xóa kết quả cho một tên chạy nhất định.

void setIsAggregrateMetrics (boolean aggregate)

Chuyển đổi tùy chọn 'số liệu tổng hợp'

Các nhà xây dựng công cộng

CollectingTestListener

public CollectingTestListener ()

Phương pháp công khai

getBuildInfo

public IBuildInfo getBuildInfo ()

Phương pháp này không được dùng nữa.
dựa vào IBuildInfo từ getInvocationContext() .

Trả về thông tin bản dựng.

Lợi nhuận
IBuildInfo

getCurrentRunResults

public TestRunResult getCurrentRunResults ()

Nhận kết quả cho lần chạy thử nghiệm hiện tại.

Lưu ý kết quả có thể không đầy đủ. Bạn nên kiểm tra giá trị của TestRunResult.isRunComplete() và / hoặc (@link TestRunResult # isRunFailure ()} nếu thích hợp trước khi xử lý kết quả.

Lợi nhuận
TestRunResult TestRunResult đại diện cho dữ liệu được thu thập trong lần chạy thử nghiệm cuối cùng

getEprisTests

public int getExpectedTests ()

Trả về số lần kiểm tra dự kiến. Có thể khác với getNumTotalTests() nếu một số thử nghiệm không chạy.

Lợi nhuận
int

getInvocationContext

public IInvocationContext getInvocationContext ()

Trả lại ngữ cảnh lời gọi đã được báo cáo qua invocationStarted(com.android.tradefed.invoker.IInvocationContext)

Lợi nhuận
IInvocationContext

getMergedTestRunResults

public  getMergedTestRunResults ()

Trả lại tập hợp kết quả đã hợp nhất cho tất cả các lần chạy qua các lần thử khác nhau.

Nếu có nhiều kết quả, mỗi lần chạy thử nghiệm sẽ được hợp nhất, với kết quả thử nghiệm mới nhất sẽ ghi đè kết quả thử nghiệm của các lần chạy trước đó. Các lần chạy thử nghiệm được sắp xếp theo số lần thử.

Các chỉ số cho cùng một lần thử sẽ được hợp nhất dựa trên tùy chọn được đặt bởi aggregate-metrics . Số liệu cuối cùng sẽ là số liệu của lần thử cuối cùng.

Lợi nhuận

getModuleContextForRunResult

public IInvocationContext getModuleContextForRunResult (String testRunName)

Trả về IInvocationContext của mô-đun được liên kết với kết quả.

Thông số
testRunName String : Tên được đặt bởi { testRunStarted(String, int) .

Lợi nhuận
IInvocationContext IInvocationContext của mô-đun cho một tên chạy thử nghiệm đã cho null nếu không có kết quả cho tên đó.

getModuleLogFiles

public MultiMap<String, LogFile> getModuleLogFiles ()

Trả về bản sao của bản đồ chứa tất cả tệp đã ghi được liên kết với mô-đun

Lợi nhuận
MultiMap <String, LogFile >

getNonAssociatedLogFiles

public MultiMap<String, LogFile> getNonAssociatedLogFiles ()

Trả về bản sao của bản đồ chứa tất cả tệp đã ghi không liên quan đến quá trình chạy thử nghiệm hoặc mô-đun.

Lợi nhuận
MultiMap <String, LogFile >

getNumAllFailedTestRuns

public int getNumAllFailedTestRuns ()

Trả về tổng số lần chạy thử nghiệm trong trạng thái không thành công

Lợi nhuận
int

getNumAllFailedTests

public int getNumAllFailedTests ()

Trả về tổng số lần kiểm tra ở trạng thái không thành công (chỉ thất bại, các lỗi giả định không được tính vào nó).

Lợi nhuận
int

getNumTestsInState

public int getNumTestsInState (TestResult.TestStatus status)

Trả về số lần kiểm tra ở trạng thái đã cho cho lần chạy này.

Thông số
status TestResult.TestStatus

Lợi nhuận
int

getNumTotalTests

public int getNumTotalTests ()

Trả về tổng số lần kiểm tra hoàn chỉnh cho tất cả các lần chạy.

Lợi nhuận
int

getPrimaryBuildInfo

public IBuildInfo getPrimaryBuildInfo ()

Trả lại thông tin bản dựng chính đã được báo cáo qua invocationStarted(com.android.tradefed.invoker.IInvocationContext) . Bản dựng chính là bản dựng được trả về bởi nhà cung cấp bản dựng đầu tiên của cấu hình đang chạy. Trả về null nếu không có ngữ cảnh (không có bản dựng thành trường hợp thử nghiệm).

Lợi nhuận
IBuildInfo

getRunResults

public  getRunResults ()

Phương pháp này không được dùng nữa.
Sử dụng getMergedTestRunResults()

Trả về kết quả cho tất cả các lần chạy thử nghiệm.

Lợi nhuận

getTestRunAtAttempt

public TestRunResult getTestRunAtAttempt (String testRunName, 
                int attempt)

Trả lại TestRunResult cho một lần thử.

Thông số
testRunName String : Tên được đặt bởi { testRunStarted(String, int) .

attempt int : Id lần thử.

Lợi nhuận
TestRunResult TestRunResult cho tên đã cho và thử id hoặc null nếu nó không tồn tại.

getTestRunAttemptCount

public int getTestRunAttemptCount (String testRunName)

Trả về số lần thử cho một tên chạy thử nhất định.

Thông số
testRunName String : Tên được đặt bởi { testRunStarted(String, int) .

Lợi nhuận
int

getTestRunAttempts

public  getTestRunAttempts (String testRunName)

Nhận tất cả các lần thử TestRunResult của một lần chạy thử nghiệm nhất định.

Thông số
testRunName String : Tên được đặt bởi { testRunStarted(String, int) .

Lợi nhuận
Tất cả TestRunResult cho một lần chạy thử nghiệm nhất định, được sắp xếp theo các lần thử.

getTestRunForAttempts

public  getTestRunForAttempts (int attempt)

Nhận tất cả các kết quả cho một lần thử nhất định.

Thông số
attempt int : Nỗ lực chúng tôi muốn có kết quả.

Lợi nhuận
Tất cả TestRunResult cho một lần thử nhất định.

getTestRunNames

public  getTestRunNames ()

Trả lại tất cả các tên cho tất cả các lần chạy thử nghiệm.

Những lần chạy thử nghiệm này có thể đã chạy nhiều lần với những lần thử khác nhau.

Lợi nhuận

hasFailedTests

public boolean hasFailedTests ()

Trả về nếu lời gọi có bất kỳ thử nghiệm không thành công hoặc giả định không thành công.

Lợi nhuận
boolean

hasTestRunResultsForName

public boolean hasTestRunResultsForName (String testRunName)

Trả về liệu một tên chạy thử nghiệm đã cho có bất kỳ kết quả nào hay không.

Thông số
testRunName String : Tên được đặt bởi { testRunStarted(String, int) .

Lợi nhuận
boolean

sự mời gọi

public void invocationEnded (long elapsedTime)

Báo cáo rằng lệnh gọi đã kết thúc, cho dù thành công hay do một số điều kiện lỗi.

Sẽ được tự động gọi bởi khuôn khổ TradeFederation.

Thông số
elapsedTime long : thời gian đã trôi qua của lời gọi tính bằng mili giây

lời kêu gọi không thành công

public void invocationFailed (Throwable cause)

Báo cáo lời gọi không đầy đủ do một số điều kiện lỗi.

Sẽ được tự động gọi bởi khuôn khổ TradeFederation.

Thông số
cause Throwable : nguyên nhân có Throwable được của sự thất bại

invocationStarted

public void invocationStarted (IInvocationContext context)

Báo cáo thời điểm bắt đầu gọi kiểm tra.

Sẽ được tự động gọi bởi khuôn khổ TradeFederation. Các phóng viên cần ghi đè phương pháp này để hỗ trợ báo cáo trên nhiều thiết bị.

Thông số
context IInvocationContext : thông tin về lời gọi

nhật ký

public void logAssociation (String dataName, 
                LogFile logFile)

Trong một số trường hợp, nhật ký phải được liên kết chặt chẽ với các trường hợp thử nghiệm, nhưng cơ hội để làm như vậy trên testLogSaved(String, com.android.tradefed.result.LogDataType, com.android.tradefed.result.InputStreamSource, com.android.tradefed.result.LogFile) không thể gọi lại. Do đó, lệnh gọi lại này cho phép cung cấp một liên kết mạnh một cách rõ ràng.

Thông số
dataName String : Tên của dữ liệu

logFile LogFile : LogFile đã được ghi trước đó và phải được liên kết với trường hợp thử nghiệm.

setBuildInfo

public void setBuildInfo (IBuildInfo buildInfo)

Phương pháp này không được dùng nữa.
Không cần thiết để thử nghiệm nữa.

Đặt thông tin bản dựng. Chỉ nên dùng để thử nghiệm.

Thông số
buildInfo IBuildInfo

setMergeStrategy

public void setMergeStrategy (MergeStrategy strategy)

Đặt MergeStrategy để sử dụng khi hợp nhất các kết quả.

Thông số
strategy MergeStrategy

testAssumptionFailure

public void testAssumptionFailure (TestDescription test, 
                String trace)

Được gọi khi một bài kiểm tra nguyên tử gắn cờ rằng nó giả định một điều kiện sai

Thông số
test TestDescription : xác định bài kiểm tra

trace String : dấu vết thất bại của ngăn xếp

testAssumptionFailure

public void testAssumptionFailure (TestDescription test, 
                FailureDescription failure)

Được gọi khi một bài kiểm tra nguyên tử gắn cờ rằng nó giả định một điều kiện sai

Thông số
test TestDescription : xác định bài kiểm tra

failure FailureDescription : FailureDescription mô tả lỗi và bối cảnh của nó.

testEnded

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

Thay thế cho ERROR(/#testEnded(com.android.tradefed.result.TestDescription,Map)) trong đó chúng tôi có thể chỉ định thời gian kết thúc trực tiếp. Kết hợp với testStarted(com.android.tradefed.result.TestDescription, long) để có số đo chính xác.

Thông số
test TestDescription : xác định bài kiểm tra

endTime long : thời gian thử nghiệm kết thúc, được đo qua System.currentTimeMillis()

testMetrics : một ERROR(/Map) của các chỉ số được phát ra

testEnded

public void testEnded (TestDescription test, 
                 testMetrics)

Báo cáo kết thúc thực thi của một trường hợp thử nghiệm riêng lẻ.

Nếu testFailed(TestDescription, FailureDescription) không được gọi, thì thử nghiệm này đã vượt qua. Đồng thời trả về bất kỳ chỉ số khóa / giá trị nào có thể đã được phát ra trong quá trình thực thi trường hợp thử nghiệm.

Thông số
test TestDescription : xác định bài kiểm tra

testMetrics : một ERROR(/Map) của các chỉ số được phát ra

thử nghiệm thất bại

public void testFailed (TestDescription test, 
                FailureDescription failure)

Báo cáo lỗi của một trường hợp thử nghiệm riêng lẻ.

Sẽ được gọi giữa testStarted và testEnded.

Thông số
test TestDescription : xác định bài kiểm tra

failure FailureDescription : FailureDescription mô tả lỗi và bối cảnh của nó.

thử nghiệm thất bại

public void testFailed (TestDescription test, 
                String trace)

Báo cáo lỗi của một trường hợp thử nghiệm riêng lẻ.

Sẽ được gọi giữa testStarted và testEnded.

Thông số
test TestDescription : xác định bài kiểm tra

trace String : dấu vết thất bại của ngăn xếp

testIgnored

public void testIgnored (TestDescription test)

Được gọi khi một bài kiểm tra sẽ không được chạy, thường là vì một phương pháp kiểm tra được chú thích bằng org.junit.Ignore.

Thông số
test TestDescription : xác định bài kiểm tra

testModuleEnded

public void testModuleEnded ()

Báo cáo kết thúc quá trình chạy mô-đun.

testModuleStarted

public void testModuleStarted (IInvocationContext moduleContext)

Báo cáo sự bắt đầu của một mô-đun đang chạy. Lệnh gọi lại này được liên kết với testModuleEnded() và là tùy chọn trong chuỗi. Nó chỉ được sử dụng trong quá trình chạy có sử dụng mô-đun: người chạy dựa trên bộ.

Thông số
moduleContext IInvocationContext : IInvocationContext của mô-đun.

testRunEnded

public void testRunEnded (long elapsedTime, 
                 runMetrics)

Báo cáo kết thúc quá trình chạy thử nghiệm. Khắc phục: Chúng tôi không thể có hai giao diện Map <> với kiểu khác nhau, vì vậy chúng tôi phải sử dụng HashMap ở đây.

Thông số
elapsedTime long : thời gian đã trôi qua của thiết bị được báo cáo, tính bằng mili giây

runMetrics : các cặp khóa-giá trị được báo cáo khi kết thúc quá trình chạy thử nghiệm với Metric .

testRunFailed

public void testRunFailed (FailureDescription failure)

Không thể hoàn tất quá trình chạy kiểm tra báo cáo do lỗi được mô tả bởi FailureDescription .

Thông số
failure FailureDescription : FailureDescription mô tả lỗi và bối cảnh của nó.

testRunFailed

public void testRunFailed (String errorMessage)

Không thể hoàn tất quá trình chạy kiểm tra báo cáo do lỗi nghiêm trọng.

Thông số
errorMessage String : String mô tả lý do chạy không thành công.

testRunStarted

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

Báo cáo khi bắt đầu chạy thử nghiệm.

Thông số
name String : tên chạy thử nghiệm

numTests int : tổng số thử nghiệm trong quá trình chạy thử nghiệm

attemptNumber int : số thứ tự, xác định các lần thử khác nhau của cùng một runName chạy nhiều lần. TryNumber được lập chỉ mục 0 và sẽ tăng lên mỗi khi một lần chạy mới xảy ra. ví dụ: Một bài kiểm tra được thử lại chi tiết 3 lần, nó phải có tổng cộng 4 lần chạy trong cùng một runName và tryNumber là từ 0 đến 3.

testRunStarted

public void testRunStarted (String name, 
                int numTests)

Báo cáo khi bắt đầu chạy thử nghiệm.

Thông số
name String : tên chạy thử nghiệm

numTests int : tổng số thử nghiệm trong quá trình chạy thử nghiệm

testRunStarted

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

Báo cáo khi bắt đầu chạy thử nghiệm.

Thông số
name String : tên chạy thử nghiệm

numTests int : tổng số thử nghiệm trong quá trình chạy thử nghiệm

attemptNumber int : số thứ tự, xác định các lần thử khác nhau của cùng một runName chạy nhiều lần. TryNumber được lập chỉ mục 0 và sẽ tăng lên mỗi khi một lần chạy mới xảy ra. ví dụ: Một bài kiểm tra được thử lại chi tiết 3 lần, nó phải có tổng cộng 4 lần chạy trong cùng một runName và tryNumber là từ 0 đến 3.

startTime long : thời gian bắt đầu chạy, được đo qua System.currentTimeMillis()

testRunStopped

public void testRunStopped (long elapsedTime)

Quá trình chạy kiểm tra báo cáo đã dừng trước khi hoàn thành do yêu cầu của người dùng.

VIỆC CẦN LÀM: hiện không được sử dụng, hãy xem xét loại bỏ

Thông số
elapsedTime long : thời gian đã trôi qua của thiết bị được báo cáo, tính bằng mili giây

testStarted

public void testStarted (TestDescription test, 
                long startTime)

Thay thế cho testStarted(com.android.tradefed.result.TestDescription) trong đó chúng tôi cũng chỉ định thời điểm bắt đầu kiểm tra, kết hợp với ERROR(/#testEnded(com.android.tradefed.result.TestDescription,long,Map)) để đo chính xác .

Thông số
test TestDescription : xác định bài kiểm tra

startTime long : thời gian bắt đầu kiểm tra, được đo qua System.currentTimeMillis()

testStarted

public void testStarted (TestDescription test)

Báo cáo sự bắt đầu của một trường hợp thử nghiệm riêng lẻ. Giao diện cũ hơn, nên sử dụng testStarted(com.android.tradefed.result.TestDescription) bất cứ khi nào có thể.

Thông số
test TestDescription : xác định bài kiểm tra

Các phương pháp được bảo vệ

clearModuleLogFiles

protected final void clearModuleLogFiles ()

Cho phép làm sạch tệp mô-đun để chúng tôi tránh mang chúng quá lâu.

clearResultsForName

protected final void clearResultsForName (String testRunName)

Cho phép xóa kết quả cho một tên chạy nhất định. Chỉ nên sử dụng trong một số trường hợp như bộ tổng hợp kết quả.

Thông số
testRunName String

setIsAggregrateMetrics

protected void setIsAggregrateMetrics (boolean aggregate)

Chuyển đổi tùy chọn 'số liệu tổng hợp'

Thông số
aggregate boolean