31
31
import java .util .Collection ;
32
32
import java .util .Collections ;
33
33
import java .util .Iterator ;
34
- import java .util .stream .Collectors ;
35
34
36
35
import org .apache .arrow .memory .AllocationOutcomeDetails .Entry ;
37
36
import org .apache .arrow .memory .rounding .RoundingPolicy ;
38
37
import org .apache .arrow .memory .rounding .SegmentRoundingPolicy ;
39
38
import org .apache .arrow .memory .util .AssertionUtil ;
39
+ import org .junit .Assert ;
40
40
import org .junit .Ignore ;
41
41
import org .junit .Test ;
42
42
import org .junit .jupiter .api .Assertions ;
43
- import org .slf4j .LoggerFactory ;
44
43
45
- import ch .qos .logback .classic .Level ;
46
- import ch .qos .logback .classic .Logger ;
47
- import ch .qos .logback .classic .spi .ILoggingEvent ;
48
- import ch .qos .logback .core .read .ListAppender ;
49
- import io .netty .buffer .PooledByteBufAllocatorL ;
50
44
import sun .misc .Unsafe ;
51
45
52
46
public class TestBaseAllocator {
@@ -448,73 +442,73 @@ public ArrowBuf empty() {
448
442
@ Test
449
443
public void testRootAllocator_listeners () throws Exception {
450
444
CountingAllocationListener l1 = new CountingAllocationListener ();
451
- assertEquals (0 , l1 .getNumPreCalls ());
452
- assertEquals (0 , l1 .getNumCalls ());
453
- assertEquals (0 , l1 .getNumReleaseCalls ());
454
- assertEquals (0 , l1 .getNumChildren ());
455
- assertEquals (0 , l1 .getTotalMem ());
445
+ Assert . assertEquals (0 , l1 .getNumPreCalls ());
446
+ Assert . assertEquals (0 , l1 .getNumCalls ());
447
+ Assert . assertEquals (0 , l1 .getNumReleaseCalls ());
448
+ Assert . assertEquals (0 , l1 .getNumChildren ());
449
+ Assert . assertEquals (0 , l1 .getTotalMem ());
456
450
CountingAllocationListener l2 = new CountingAllocationListener ();
457
- assertEquals (0 , l2 .getNumPreCalls ());
458
- assertEquals (0 , l2 .getNumCalls ());
459
- assertEquals (0 , l2 .getNumReleaseCalls ());
460
- assertEquals (0 , l2 .getNumChildren ());
461
- assertEquals (0 , l2 .getTotalMem ());
451
+ Assert . assertEquals (0 , l2 .getNumPreCalls ());
452
+ Assert . assertEquals (0 , l2 .getNumCalls ());
453
+ Assert . assertEquals (0 , l2 .getNumReleaseCalls ());
454
+ Assert . assertEquals (0 , l2 .getNumChildren ());
455
+ Assert . assertEquals (0 , l2 .getTotalMem ());
462
456
// root and first-level child share the first listener
463
457
// second-level and third-level child share the second listener
464
458
try (final RootAllocator rootAllocator = new RootAllocator (l1 , MAX_ALLOCATION )) {
465
459
try (final BufferAllocator c1 = rootAllocator .newChildAllocator ("c1" , 0 , MAX_ALLOCATION )) {
466
- assertEquals (1 , l1 .getNumChildren ());
460
+ Assert . assertEquals (1 , l1 .getNumChildren ());
467
461
final ArrowBuf buf1 = c1 .buffer (16 );
468
462
assertNotNull ("allocation failed" , buf1 );
469
- assertEquals (1 , l1 .getNumPreCalls ());
470
- assertEquals (1 , l1 .getNumCalls ());
471
- assertEquals (0 , l1 .getNumReleaseCalls ());
472
- assertEquals (16 , l1 .getTotalMem ());
463
+ Assert . assertEquals (1 , l1 .getNumPreCalls ());
464
+ Assert . assertEquals (1 , l1 .getNumCalls ());
465
+ Assert . assertEquals (0 , l1 .getNumReleaseCalls ());
466
+ Assert . assertEquals (16 , l1 .getTotalMem ());
473
467
buf1 .getReferenceManager ().release ();
474
468
try (final BufferAllocator c2 = c1 .newChildAllocator ("c2" , l2 , 0 , MAX_ALLOCATION )) {
475
- assertEquals (2 , l1 .getNumChildren ()); // c1 got a new child, so c1's listener (l1) is notified
476
- assertEquals (0 , l2 .getNumChildren ());
469
+ Assert . assertEquals (2 , l1 .getNumChildren ()); // c1 got a new child, so c1's listener (l1) is notified
470
+ Assert . assertEquals (0 , l2 .getNumChildren ());
477
471
final ArrowBuf buf2 = c2 .buffer (32 );
478
472
assertNotNull ("allocation failed" , buf2 );
479
- assertEquals (1 , l1 .getNumCalls ());
480
- assertEquals (16 , l1 .getTotalMem ());
481
- assertEquals (1 , l2 .getNumPreCalls ());
482
- assertEquals (1 , l2 .getNumCalls ());
483
- assertEquals (0 , l2 .getNumReleaseCalls ());
484
- assertEquals (32 , l2 .getTotalMem ());
473
+ Assert . assertEquals (1 , l1 .getNumCalls ());
474
+ Assert . assertEquals (16 , l1 .getTotalMem ());
475
+ Assert . assertEquals (1 , l2 .getNumPreCalls ());
476
+ Assert . assertEquals (1 , l2 .getNumCalls ());
477
+ Assert . assertEquals (0 , l2 .getNumReleaseCalls ());
478
+ Assert . assertEquals (32 , l2 .getTotalMem ());
485
479
buf2 .getReferenceManager ().release ();
486
480
try (final BufferAllocator c3 = c2 .newChildAllocator ("c3" , 0 , MAX_ALLOCATION )) {
487
- assertEquals (2 , l1 .getNumChildren ());
488
- assertEquals (1 , l2 .getNumChildren ());
481
+ Assert . assertEquals (2 , l1 .getNumChildren ());
482
+ Assert . assertEquals (1 , l2 .getNumChildren ());
489
483
final ArrowBuf buf3 = c3 .buffer (64 );
490
484
assertNotNull ("allocation failed" , buf3 );
491
- assertEquals (1 , l1 .getNumPreCalls ());
492
- assertEquals (1 , l1 .getNumCalls ());
493
- assertEquals (1 , l1 .getNumReleaseCalls ());
494
- assertEquals (16 , l1 .getTotalMem ());
495
- assertEquals (2 , l2 .getNumPreCalls ());
496
- assertEquals (2 , l2 .getNumCalls ());
497
- assertEquals (1 , l2 .getNumReleaseCalls ());
498
- assertEquals (32 + 64 , l2 .getTotalMem ());
485
+ Assert . assertEquals (1 , l1 .getNumPreCalls ());
486
+ Assert . assertEquals (1 , l1 .getNumCalls ());
487
+ Assert . assertEquals (1 , l1 .getNumReleaseCalls ());
488
+ Assert . assertEquals (16 , l1 .getTotalMem ());
489
+ Assert . assertEquals (2 , l2 .getNumPreCalls ());
490
+ Assert . assertEquals (2 , l2 .getNumCalls ());
491
+ Assert . assertEquals (1 , l2 .getNumReleaseCalls ());
492
+ Assert . assertEquals (32 + 64 , l2 .getTotalMem ());
499
493
buf3 .getReferenceManager ().release ();
500
494
}
501
- assertEquals (2 , l1 .getNumChildren ());
502
- assertEquals (0 , l2 .getNumChildren ()); // third-level child removed
495
+ Assert . assertEquals (2 , l1 .getNumChildren ());
496
+ Assert . assertEquals (0 , l2 .getNumChildren ()); // third-level child removed
503
497
}
504
- assertEquals (1 , l1 .getNumChildren ()); // second-level child removed
505
- assertEquals (0 , l2 .getNumChildren ());
498
+ Assert . assertEquals (1 , l1 .getNumChildren ()); // second-level child removed
499
+ Assert . assertEquals (0 , l2 .getNumChildren ());
506
500
}
507
- assertEquals (0 , l1 .getNumChildren ()); // first-level child removed
501
+ Assert . assertEquals (0 , l1 .getNumChildren ()); // first-level child removed
508
502
509
- assertEquals (2 , l2 .getNumReleaseCalls ());
503
+ Assert . assertEquals (2 , l2 .getNumReleaseCalls ());
510
504
}
511
505
}
512
506
513
507
@ Test
514
508
public void testRootAllocator_listenerAllocationFail () throws Exception {
515
509
CountingAllocationListener l1 = new CountingAllocationListener ();
516
- assertEquals (0 , l1 .getNumCalls ());
517
- assertEquals (0 , l1 .getTotalMem ());
510
+ Assert . assertEquals (0 , l1 .getNumCalls ());
511
+ Assert . assertEquals (0 , l1 .getTotalMem ());
518
512
// Test attempts to allocate too much from a child whose limit is set to half of the max
519
513
// allocation. The listener's callback triggers, expanding the child allocator's limit, so then
520
514
// the allocation succeeds.
@@ -527,14 +521,14 @@ public void testRootAllocator_listenerAllocationFail() throws Exception {
527
521
} catch (OutOfMemoryException e ) {
528
522
// expected
529
523
}
530
- assertEquals (0 , l1 .getNumCalls ());
531
- assertEquals (0 , l1 .getTotalMem ());
524
+ Assert . assertEquals (0 , l1 .getNumCalls ());
525
+ Assert . assertEquals (0 , l1 .getTotalMem ());
532
526
533
527
l1 .setExpandOnFail (c1 , MAX_ALLOCATION );
534
528
ArrowBuf arrowBuf = c1 .buffer (MAX_ALLOCATION );
535
529
assertNotNull ("allocation failed" , arrowBuf );
536
- assertEquals (1 , l1 .getNumCalls ());
537
- assertEquals (MAX_ALLOCATION , l1 .getTotalMem ());
530
+ Assert . assertEquals (1 , l1 .getNumCalls ());
531
+ Assert . assertEquals (MAX_ALLOCATION , l1 .getTotalMem ());
538
532
arrowBuf .getReferenceManager ().release ();
539
533
}
540
534
}
@@ -1098,42 +1092,6 @@ public void testMemoryLeakWithReservation() throws Exception {
1098
1092
}
1099
1093
}
1100
1094
1101
- @ Test
1102
- public void testMemoryUsage () {
1103
- ListAppender <ILoggingEvent > memoryLogsAppender = new ListAppender <>();
1104
- Logger logger = (Logger ) LoggerFactory .getLogger ("arrow.allocator" );
1105
- try {
1106
- logger .setLevel (Level .TRACE );
1107
- logger .addAppender (memoryLogsAppender );
1108
- memoryLogsAppender .start ();
1109
- try (ArrowBuf buf = new ArrowBuf (ReferenceManager .NO_OP , null ,
1110
- 1024 , new PooledByteBufAllocatorL ().empty .memoryAddress ())) {
1111
- buf .memoryAddress ();
1112
- }
1113
- boolean result = false ;
1114
- long startTime = System .currentTimeMillis ();
1115
- while ((System .currentTimeMillis () - startTime ) < 10000 ) { // 10 seconds maximum for time to read logs
1116
- result = memoryLogsAppender .list .stream ()
1117
- .anyMatch (
1118
- log -> log .toString ().contains ("Memory Usage: \n " ) &&
1119
- log .toString ().contains ("Large buffers outstanding: " ) &&
1120
- log .toString ().contains ("Normal buffers outstanding: " ) &&
1121
- log .getLevel ().equals (Level .TRACE )
1122
- );
1123
- if (result ) {
1124
- break ;
1125
- }
1126
- }
1127
- assertTrue ("Log messages are:\n " +
1128
- memoryLogsAppender .list .stream ().map (ILoggingEvent ::toString ).collect (Collectors .joining ("\n " )),
1129
- result );
1130
- } finally {
1131
- memoryLogsAppender .stop ();
1132
- logger .detachAppender (memoryLogsAppender );
1133
- logger .setLevel (null );
1134
- }
1135
- }
1136
-
1137
1095
@ Test
1138
1096
public void testOverlimit () {
1139
1097
try (BufferAllocator allocator = new RootAllocator (1024 )) {
0 commit comments